]*>/gi, '[quote]');
+ rep(/<\/blockquote>/gi, '[/quote]');
+ rep(/
/gi, '\n');
+ rep(/
/gi, '\n');
+ rep(/
/gi, '\n');
+ rep(//gi, '');
+ rep(/<\/p>/gi, '\n');
+ rep(/ |\u00a0/gi, ' ');
+ rep(/"/gi, '"');
+ rep(/</gi, '<');
+ rep(/>/gi, '>');
+ rep(/&/gi, '&');
+ return s;
+ };
+ var bbcode2html = function (s) {
+ s = global$1.trim(s);
+ var rep = function (re, str) {
+ s = s.replace(re, str);
+ };
+ rep(/\n/gi, '
');
+ rep(/\[b\]/gi, '');
+ rep(/\[\/b\]/gi, '');
+ rep(/\[i\]/gi, '');
+ rep(/\[\/i\]/gi, '');
+ rep(/\[u\]/gi, '');
+ rep(/\[\/u\]/gi, '');
+ rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi, '$2');
+ rep(/\[url\](.*?)\[\/url\]/gi, '$1');
+ rep(/\[img\](.*?)\[\/img\]/gi, '
');
+ rep(/\[color=(.*?)\](.*?)\[\/color\]/gi, '$2');
+ rep(/\[code\](.*?)\[\/code\]/gi, '$1 ');
+ rep(/\[quote.*?\](.*?)\[\/quote\]/gi, '$1 ');
+ return s;
+ };
+
+ function Plugin () {
+ global.add('bbcode', function (editor) {
+ editor.on('BeforeSetContent', function (e) {
+ e.content = bbcode2html(e.content);
+ });
+ editor.on('PostProcess', function (e) {
+ if (e.set) {
+ e.content = bbcode2html(e.content);
+ }
+ if (e.get) {
+ e.content = html2bbcode(e.content);
+ }
+ });
+ });
+ }
+
+ Plugin();
+
+}());
diff --git a/public/static/component/pear/module/tinymce/tinymce/plugins/bbcode/plugin.min.js b/public/static/component/pear/module/tinymce/tinymce/plugins/bbcode/plugin.min.js
new file mode 100644
index 0000000..a0471d4
--- /dev/null
+++ b/public/static/component/pear/module/tinymce/tinymce/plugins/bbcode/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.6.2 (2020-12-08)
+ */
+!function(){"use strict";var o=tinymce.util.Tools.resolve("tinymce.PluginManager"),e=tinymce.util.Tools.resolve("tinymce.util.Tools"),t=function(t){t=e.trim(t);var o=function(o,e){t=t.replace(o,e)};return o(/\n/gi,"
"),o(/\[b\]/gi,""),o(/\[\/b\]/gi,""),o(/\[i\]/gi,""),o(/\[\/i\]/gi,""),o(/\[u\]/gi,""),o(/\[\/u\]/gi,""),o(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'$2'),o(/\[url\](.*?)\[\/url\]/gi,'$1'),o(/\[img\](.*?)\[\/img\]/gi,'
'),o(/\[color=(.*?)\](.*?)\[\/color\]/gi,'$2'),o(/\[code\](.*?)\[\/code\]/gi,'$1 '),o(/\[quote.*?\](.*?)\[\/quote\]/gi,'$1 '),t};o.add("bbcode",function(o){o.on("BeforeSetContent",function(o){o.content=t(o.content)}),o.on("PostProcess",function(o){o.set&&(o.content=t(o.content)),o.get&&(o.content=function(t){t=e.trim(t);var o=function(o,e){t=t.replace(o,e)};return o(/(.*?)<\/a>/gi,"[url=$1]$2[/url]"),o(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),o(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),o(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),o(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),o(/(.*?)<\/span>/gi,"[color=$1]$2[/color]"),o(/(.*?)<\/font>/gi,"[color=$1]$2[/color]"),o(/(.*?)<\/span>/gi,"[size=$1]$2[/size]"),o(/(.*?)<\/font>/gi,"$1"),o(//gi,"[img]$1[/img]"),o(/(.*?)<\/span>/gi,"[code]$1[/code]"),o(/(.*?)<\/span>/gi,"[quote]$1[/quote]"),o(/(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]"),o(/(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]"),o(/(.*?)<\/em>/gi,"[code][i]$1[/i][/code]"),o(/(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]"),o(/(.*?)<\/u>/gi,"[code][u]$1[/u][/code]"),o(/(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]"),o(/<\/(strong|b)>/gi,"[/b]"),o(/<(strong|b)>/gi,"[b]"),o(/<\/(em|i)>/gi,"[/i]"),o(/<(em|i)>/gi,"[i]"),o(/<\/u>/gi,"[/u]"),o(/(.*?)<\/span>/gi,"[u]$1[/u]"),o(//gi,"[u]"),o(/]*>/gi,"[quote]"),o(/<\/blockquote>/gi,"[/quote]"),o(/
/gi,"\n"),o(/
/gi,"\n"),o(/
/gi,"\n"),o(//gi,""),o(/<\/p>/gi,"\n"),o(/ |\u00a0/gi," "),o(/"/gi,'"'),o(/</gi,"<"),o(/>/gi,">"),o(/&/gi,"&"),t}(o.content))})})}();
\ No newline at end of file
diff --git a/public/static/component/pear/module/tinymce/tinymce/plugins/charmap/plugin.js b/public/static/component/pear/module/tinymce/tinymce/plugins/charmap/plugin.js
new file mode 100644
index 0000000..cceb2ec
--- /dev/null
+++ b/public/static/component/pear/module/tinymce/tinymce/plugins/charmap/plugin.js
@@ -0,0 +1,1706 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.6.2 (2020-12-08)
+ */
+(function () {
+ 'use strict';
+
+ var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
+
+ var fireInsertCustomChar = function (editor, chr) {
+ return editor.fire('insertCustomChar', { chr: chr });
+ };
+
+ var insertChar = function (editor, chr) {
+ var evtChr = fireInsertCustomChar(editor, chr).chr;
+ editor.execCommand('mceInsertContent', false, evtChr);
+ };
+
+ var noop = function () {
+ };
+ var constant = function (value) {
+ return function () {
+ return value;
+ };
+ };
+ var never = constant(false);
+ var always = constant(true);
+
+ var none = function () {
+ return NONE;
+ };
+ var NONE = function () {
+ var eq = function (o) {
+ return o.isNone();
+ };
+ var call = function (thunk) {
+ return thunk();
+ };
+ var id = function (n) {
+ return n;
+ };
+ var me = {
+ fold: function (n, _s) {
+ return n();
+ },
+ is: never,
+ isSome: never,
+ isNone: always,
+ getOr: id,
+ getOrThunk: call,
+ getOrDie: function (msg) {
+ throw new Error(msg || 'error: getOrDie called on none.');
+ },
+ getOrNull: constant(null),
+ getOrUndefined: constant(undefined),
+ or: id,
+ orThunk: call,
+ map: none,
+ each: noop,
+ bind: none,
+ exists: never,
+ forall: always,
+ filter: none,
+ equals: eq,
+ equals_: eq,
+ toArray: function () {
+ return [];
+ },
+ toString: constant('none()')
+ };
+ return me;
+ }();
+ var some = function (a) {
+ var constant_a = constant(a);
+ var self = function () {
+ return me;
+ };
+ var bind = function (f) {
+ return f(a);
+ };
+ var me = {
+ fold: function (n, s) {
+ return s(a);
+ },
+ is: function (v) {
+ return a === v;
+ },
+ isSome: always,
+ isNone: never,
+ getOr: constant_a,
+ getOrThunk: constant_a,
+ getOrDie: constant_a,
+ getOrNull: constant_a,
+ getOrUndefined: constant_a,
+ or: self,
+ orThunk: self,
+ map: function (f) {
+ return some(f(a));
+ },
+ each: function (f) {
+ f(a);
+ },
+ bind: bind,
+ exists: bind,
+ forall: bind,
+ filter: function (f) {
+ return f(a) ? me : NONE;
+ },
+ toArray: function () {
+ return [a];
+ },
+ toString: function () {
+ return 'some(' + a + ')';
+ },
+ equals: function (o) {
+ return o.is(a);
+ },
+ equals_: function (o, elementEq) {
+ return o.fold(never, function (b) {
+ return elementEq(a, b);
+ });
+ }
+ };
+ return me;
+ };
+ var from = function (value) {
+ return value === null || value === undefined ? NONE : some(value);
+ };
+ var Optional = {
+ some: some,
+ none: none,
+ from: from
+ };
+
+ var typeOf = function (x) {
+ var t = typeof x;
+ if (x === null) {
+ return 'null';
+ } else if (t === 'object' && (Array.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'Array')) {
+ return 'array';
+ } else if (t === 'object' && (String.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'String')) {
+ return 'string';
+ } else {
+ return t;
+ }
+ };
+ var isType = function (type) {
+ return function (value) {
+ return typeOf(value) === type;
+ };
+ };
+ var isArray = isType('array');
+
+ var nativePush = Array.prototype.push;
+ var map = function (xs, f) {
+ var len = xs.length;
+ var r = new Array(len);
+ for (var i = 0; i < len; i++) {
+ var x = xs[i];
+ r[i] = f(x, i);
+ }
+ return r;
+ };
+ var each = function (xs, f) {
+ for (var i = 0, len = xs.length; i < len; i++) {
+ var x = xs[i];
+ f(x, i);
+ }
+ };
+ var findUntil = function (xs, pred, until) {
+ for (var i = 0, len = xs.length; i < len; i++) {
+ var x = xs[i];
+ if (pred(x, i)) {
+ return Optional.some(x);
+ } else if (until(x, i)) {
+ break;
+ }
+ }
+ return Optional.none();
+ };
+ var find = function (xs, pred) {
+ return findUntil(xs, pred, never);
+ };
+ var flatten = function (xs) {
+ var r = [];
+ for (var i = 0, len = xs.length; i < len; ++i) {
+ if (!isArray(xs[i])) {
+ throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs);
+ }
+ nativePush.apply(r, xs[i]);
+ }
+ return r;
+ };
+ var bind = function (xs, f) {
+ return flatten(map(xs, f));
+ };
+
+ var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools');
+
+ var getCharMap = function (editor) {
+ return editor.getParam('charmap');
+ };
+ var getCharMapAppend = function (editor) {
+ return editor.getParam('charmap_append');
+ };
+
+ var isArray$1 = global$1.isArray;
+ var UserDefined = 'User Defined';
+ var getDefaultCharMap = function () {
+ return [
+ {
+ name: 'Currency',
+ characters: [
+ [
+ 36,
+ 'dollar sign'
+ ],
+ [
+ 162,
+ 'cent sign'
+ ],
+ [
+ 8364,
+ 'euro sign'
+ ],
+ [
+ 163,
+ 'pound sign'
+ ],
+ [
+ 165,
+ 'yen sign'
+ ],
+ [
+ 164,
+ 'currency sign'
+ ],
+ [
+ 8352,
+ 'euro-currency sign'
+ ],
+ [
+ 8353,
+ 'colon sign'
+ ],
+ [
+ 8354,
+ 'cruzeiro sign'
+ ],
+ [
+ 8355,
+ 'french franc sign'
+ ],
+ [
+ 8356,
+ 'lira sign'
+ ],
+ [
+ 8357,
+ 'mill sign'
+ ],
+ [
+ 8358,
+ 'naira sign'
+ ],
+ [
+ 8359,
+ 'peseta sign'
+ ],
+ [
+ 8360,
+ 'rupee sign'
+ ],
+ [
+ 8361,
+ 'won sign'
+ ],
+ [
+ 8362,
+ 'new sheqel sign'
+ ],
+ [
+ 8363,
+ 'dong sign'
+ ],
+ [
+ 8365,
+ 'kip sign'
+ ],
+ [
+ 8366,
+ 'tugrik sign'
+ ],
+ [
+ 8367,
+ 'drachma sign'
+ ],
+ [
+ 8368,
+ 'german penny symbol'
+ ],
+ [
+ 8369,
+ 'peso sign'
+ ],
+ [
+ 8370,
+ 'guarani sign'
+ ],
+ [
+ 8371,
+ 'austral sign'
+ ],
+ [
+ 8372,
+ 'hryvnia sign'
+ ],
+ [
+ 8373,
+ 'cedi sign'
+ ],
+ [
+ 8374,
+ 'livre tournois sign'
+ ],
+ [
+ 8375,
+ 'spesmilo sign'
+ ],
+ [
+ 8376,
+ 'tenge sign'
+ ],
+ [
+ 8377,
+ 'indian rupee sign'
+ ],
+ [
+ 8378,
+ 'turkish lira sign'
+ ],
+ [
+ 8379,
+ 'nordic mark sign'
+ ],
+ [
+ 8380,
+ 'manat sign'
+ ],
+ [
+ 8381,
+ 'ruble sign'
+ ],
+ [
+ 20870,
+ 'yen character'
+ ],
+ [
+ 20803,
+ 'yuan character'
+ ],
+ [
+ 22291,
+ 'yuan character, in hong kong and taiwan'
+ ],
+ [
+ 22278,
+ 'yen/yuan character variant one'
+ ]
+ ]
+ },
+ {
+ name: 'Text',
+ characters: [
+ [
+ 169,
+ 'copyright sign'
+ ],
+ [
+ 174,
+ 'registered sign'
+ ],
+ [
+ 8482,
+ 'trade mark sign'
+ ],
+ [
+ 8240,
+ 'per mille sign'
+ ],
+ [
+ 181,
+ 'micro sign'
+ ],
+ [
+ 183,
+ 'middle dot'
+ ],
+ [
+ 8226,
+ 'bullet'
+ ],
+ [
+ 8230,
+ 'three dot leader'
+ ],
+ [
+ 8242,
+ 'minutes / feet'
+ ],
+ [
+ 8243,
+ 'seconds / inches'
+ ],
+ [
+ 167,
+ 'section sign'
+ ],
+ [
+ 182,
+ 'paragraph sign'
+ ],
+ [
+ 223,
+ 'sharp s / ess-zed'
+ ]
+ ]
+ },
+ {
+ name: 'Quotations',
+ characters: [
+ [
+ 8249,
+ 'single left-pointing angle quotation mark'
+ ],
+ [
+ 8250,
+ 'single right-pointing angle quotation mark'
+ ],
+ [
+ 171,
+ 'left pointing guillemet'
+ ],
+ [
+ 187,
+ 'right pointing guillemet'
+ ],
+ [
+ 8216,
+ 'left single quotation mark'
+ ],
+ [
+ 8217,
+ 'right single quotation mark'
+ ],
+ [
+ 8220,
+ 'left double quotation mark'
+ ],
+ [
+ 8221,
+ 'right double quotation mark'
+ ],
+ [
+ 8218,
+ 'single low-9 quotation mark'
+ ],
+ [
+ 8222,
+ 'double low-9 quotation mark'
+ ],
+ [
+ 60,
+ 'less-than sign'
+ ],
+ [
+ 62,
+ 'greater-than sign'
+ ],
+ [
+ 8804,
+ 'less-than or equal to'
+ ],
+ [
+ 8805,
+ 'greater-than or equal to'
+ ],
+ [
+ 8211,
+ 'en dash'
+ ],
+ [
+ 8212,
+ 'em dash'
+ ],
+ [
+ 175,
+ 'macron'
+ ],
+ [
+ 8254,
+ 'overline'
+ ],
+ [
+ 164,
+ 'currency sign'
+ ],
+ [
+ 166,
+ 'broken bar'
+ ],
+ [
+ 168,
+ 'diaeresis'
+ ],
+ [
+ 161,
+ 'inverted exclamation mark'
+ ],
+ [
+ 191,
+ 'turned question mark'
+ ],
+ [
+ 710,
+ 'circumflex accent'
+ ],
+ [
+ 732,
+ 'small tilde'
+ ],
+ [
+ 176,
+ 'degree sign'
+ ],
+ [
+ 8722,
+ 'minus sign'
+ ],
+ [
+ 177,
+ 'plus-minus sign'
+ ],
+ [
+ 247,
+ 'division sign'
+ ],
+ [
+ 8260,
+ 'fraction slash'
+ ],
+ [
+ 215,
+ 'multiplication sign'
+ ],
+ [
+ 185,
+ 'superscript one'
+ ],
+ [
+ 178,
+ 'superscript two'
+ ],
+ [
+ 179,
+ 'superscript three'
+ ],
+ [
+ 188,
+ 'fraction one quarter'
+ ],
+ [
+ 189,
+ 'fraction one half'
+ ],
+ [
+ 190,
+ 'fraction three quarters'
+ ]
+ ]
+ },
+ {
+ name: 'Mathematical',
+ characters: [
+ [
+ 402,
+ 'function / florin'
+ ],
+ [
+ 8747,
+ 'integral'
+ ],
+ [
+ 8721,
+ 'n-ary sumation'
+ ],
+ [
+ 8734,
+ 'infinity'
+ ],
+ [
+ 8730,
+ 'square root'
+ ],
+ [
+ 8764,
+ 'similar to'
+ ],
+ [
+ 8773,
+ 'approximately equal to'
+ ],
+ [
+ 8776,
+ 'almost equal to'
+ ],
+ [
+ 8800,
+ 'not equal to'
+ ],
+ [
+ 8801,
+ 'identical to'
+ ],
+ [
+ 8712,
+ 'element of'
+ ],
+ [
+ 8713,
+ 'not an element of'
+ ],
+ [
+ 8715,
+ 'contains as member'
+ ],
+ [
+ 8719,
+ 'n-ary product'
+ ],
+ [
+ 8743,
+ 'logical and'
+ ],
+ [
+ 8744,
+ 'logical or'
+ ],
+ [
+ 172,
+ 'not sign'
+ ],
+ [
+ 8745,
+ 'intersection'
+ ],
+ [
+ 8746,
+ 'union'
+ ],
+ [
+ 8706,
+ 'partial differential'
+ ],
+ [
+ 8704,
+ 'for all'
+ ],
+ [
+ 8707,
+ 'there exists'
+ ],
+ [
+ 8709,
+ 'diameter'
+ ],
+ [
+ 8711,
+ 'backward difference'
+ ],
+ [
+ 8727,
+ 'asterisk operator'
+ ],
+ [
+ 8733,
+ 'proportional to'
+ ],
+ [
+ 8736,
+ 'angle'
+ ]
+ ]
+ },
+ {
+ name: 'Extended Latin',
+ characters: [
+ [
+ 192,
+ 'A - grave'
+ ],
+ [
+ 193,
+ 'A - acute'
+ ],
+ [
+ 194,
+ 'A - circumflex'
+ ],
+ [
+ 195,
+ 'A - tilde'
+ ],
+ [
+ 196,
+ 'A - diaeresis'
+ ],
+ [
+ 197,
+ 'A - ring above'
+ ],
+ [
+ 256,
+ 'A - macron'
+ ],
+ [
+ 198,
+ 'ligature AE'
+ ],
+ [
+ 199,
+ 'C - cedilla'
+ ],
+ [
+ 200,
+ 'E - grave'
+ ],
+ [
+ 201,
+ 'E - acute'
+ ],
+ [
+ 202,
+ 'E - circumflex'
+ ],
+ [
+ 203,
+ 'E - diaeresis'
+ ],
+ [
+ 274,
+ 'E - macron'
+ ],
+ [
+ 204,
+ 'I - grave'
+ ],
+ [
+ 205,
+ 'I - acute'
+ ],
+ [
+ 206,
+ 'I - circumflex'
+ ],
+ [
+ 207,
+ 'I - diaeresis'
+ ],
+ [
+ 298,
+ 'I - macron'
+ ],
+ [
+ 208,
+ 'ETH'
+ ],
+ [
+ 209,
+ 'N - tilde'
+ ],
+ [
+ 210,
+ 'O - grave'
+ ],
+ [
+ 211,
+ 'O - acute'
+ ],
+ [
+ 212,
+ 'O - circumflex'
+ ],
+ [
+ 213,
+ 'O - tilde'
+ ],
+ [
+ 214,
+ 'O - diaeresis'
+ ],
+ [
+ 216,
+ 'O - slash'
+ ],
+ [
+ 332,
+ 'O - macron'
+ ],
+ [
+ 338,
+ 'ligature OE'
+ ],
+ [
+ 352,
+ 'S - caron'
+ ],
+ [
+ 217,
+ 'U - grave'
+ ],
+ [
+ 218,
+ 'U - acute'
+ ],
+ [
+ 219,
+ 'U - circumflex'
+ ],
+ [
+ 220,
+ 'U - diaeresis'
+ ],
+ [
+ 362,
+ 'U - macron'
+ ],
+ [
+ 221,
+ 'Y - acute'
+ ],
+ [
+ 376,
+ 'Y - diaeresis'
+ ],
+ [
+ 562,
+ 'Y - macron'
+ ],
+ [
+ 222,
+ 'THORN'
+ ],
+ [
+ 224,
+ 'a - grave'
+ ],
+ [
+ 225,
+ 'a - acute'
+ ],
+ [
+ 226,
+ 'a - circumflex'
+ ],
+ [
+ 227,
+ 'a - tilde'
+ ],
+ [
+ 228,
+ 'a - diaeresis'
+ ],
+ [
+ 229,
+ 'a - ring above'
+ ],
+ [
+ 257,
+ 'a - macron'
+ ],
+ [
+ 230,
+ 'ligature ae'
+ ],
+ [
+ 231,
+ 'c - cedilla'
+ ],
+ [
+ 232,
+ 'e - grave'
+ ],
+ [
+ 233,
+ 'e - acute'
+ ],
+ [
+ 234,
+ 'e - circumflex'
+ ],
+ [
+ 235,
+ 'e - diaeresis'
+ ],
+ [
+ 275,
+ 'e - macron'
+ ],
+ [
+ 236,
+ 'i - grave'
+ ],
+ [
+ 237,
+ 'i - acute'
+ ],
+ [
+ 238,
+ 'i - circumflex'
+ ],
+ [
+ 239,
+ 'i - diaeresis'
+ ],
+ [
+ 299,
+ 'i - macron'
+ ],
+ [
+ 240,
+ 'eth'
+ ],
+ [
+ 241,
+ 'n - tilde'
+ ],
+ [
+ 242,
+ 'o - grave'
+ ],
+ [
+ 243,
+ 'o - acute'
+ ],
+ [
+ 244,
+ 'o - circumflex'
+ ],
+ [
+ 245,
+ 'o - tilde'
+ ],
+ [
+ 246,
+ 'o - diaeresis'
+ ],
+ [
+ 248,
+ 'o slash'
+ ],
+ [
+ 333,
+ 'o macron'
+ ],
+ [
+ 339,
+ 'ligature oe'
+ ],
+ [
+ 353,
+ 's - caron'
+ ],
+ [
+ 249,
+ 'u - grave'
+ ],
+ [
+ 250,
+ 'u - acute'
+ ],
+ [
+ 251,
+ 'u - circumflex'
+ ],
+ [
+ 252,
+ 'u - diaeresis'
+ ],
+ [
+ 363,
+ 'u - macron'
+ ],
+ [
+ 253,
+ 'y - acute'
+ ],
+ [
+ 254,
+ 'thorn'
+ ],
+ [
+ 255,
+ 'y - diaeresis'
+ ],
+ [
+ 563,
+ 'y - macron'
+ ],
+ [
+ 913,
+ 'Alpha'
+ ],
+ [
+ 914,
+ 'Beta'
+ ],
+ [
+ 915,
+ 'Gamma'
+ ],
+ [
+ 916,
+ 'Delta'
+ ],
+ [
+ 917,
+ 'Epsilon'
+ ],
+ [
+ 918,
+ 'Zeta'
+ ],
+ [
+ 919,
+ 'Eta'
+ ],
+ [
+ 920,
+ 'Theta'
+ ],
+ [
+ 921,
+ 'Iota'
+ ],
+ [
+ 922,
+ 'Kappa'
+ ],
+ [
+ 923,
+ 'Lambda'
+ ],
+ [
+ 924,
+ 'Mu'
+ ],
+ [
+ 925,
+ 'Nu'
+ ],
+ [
+ 926,
+ 'Xi'
+ ],
+ [
+ 927,
+ 'Omicron'
+ ],
+ [
+ 928,
+ 'Pi'
+ ],
+ [
+ 929,
+ 'Rho'
+ ],
+ [
+ 931,
+ 'Sigma'
+ ],
+ [
+ 932,
+ 'Tau'
+ ],
+ [
+ 933,
+ 'Upsilon'
+ ],
+ [
+ 934,
+ 'Phi'
+ ],
+ [
+ 935,
+ 'Chi'
+ ],
+ [
+ 936,
+ 'Psi'
+ ],
+ [
+ 937,
+ 'Omega'
+ ],
+ [
+ 945,
+ 'alpha'
+ ],
+ [
+ 946,
+ 'beta'
+ ],
+ [
+ 947,
+ 'gamma'
+ ],
+ [
+ 948,
+ 'delta'
+ ],
+ [
+ 949,
+ 'epsilon'
+ ],
+ [
+ 950,
+ 'zeta'
+ ],
+ [
+ 951,
+ 'eta'
+ ],
+ [
+ 952,
+ 'theta'
+ ],
+ [
+ 953,
+ 'iota'
+ ],
+ [
+ 954,
+ 'kappa'
+ ],
+ [
+ 955,
+ 'lambda'
+ ],
+ [
+ 956,
+ 'mu'
+ ],
+ [
+ 957,
+ 'nu'
+ ],
+ [
+ 958,
+ 'xi'
+ ],
+ [
+ 959,
+ 'omicron'
+ ],
+ [
+ 960,
+ 'pi'
+ ],
+ [
+ 961,
+ 'rho'
+ ],
+ [
+ 962,
+ 'final sigma'
+ ],
+ [
+ 963,
+ 'sigma'
+ ],
+ [
+ 964,
+ 'tau'
+ ],
+ [
+ 965,
+ 'upsilon'
+ ],
+ [
+ 966,
+ 'phi'
+ ],
+ [
+ 967,
+ 'chi'
+ ],
+ [
+ 968,
+ 'psi'
+ ],
+ [
+ 969,
+ 'omega'
+ ]
+ ]
+ },
+ {
+ name: 'Symbols',
+ characters: [
+ [
+ 8501,
+ 'alef symbol'
+ ],
+ [
+ 982,
+ 'pi symbol'
+ ],
+ [
+ 8476,
+ 'real part symbol'
+ ],
+ [
+ 978,
+ 'upsilon - hook symbol'
+ ],
+ [
+ 8472,
+ 'Weierstrass p'
+ ],
+ [
+ 8465,
+ 'imaginary part'
+ ]
+ ]
+ },
+ {
+ name: 'Arrows',
+ characters: [
+ [
+ 8592,
+ 'leftwards arrow'
+ ],
+ [
+ 8593,
+ 'upwards arrow'
+ ],
+ [
+ 8594,
+ 'rightwards arrow'
+ ],
+ [
+ 8595,
+ 'downwards arrow'
+ ],
+ [
+ 8596,
+ 'left right arrow'
+ ],
+ [
+ 8629,
+ 'carriage return'
+ ],
+ [
+ 8656,
+ 'leftwards double arrow'
+ ],
+ [
+ 8657,
+ 'upwards double arrow'
+ ],
+ [
+ 8658,
+ 'rightwards double arrow'
+ ],
+ [
+ 8659,
+ 'downwards double arrow'
+ ],
+ [
+ 8660,
+ 'left right double arrow'
+ ],
+ [
+ 8756,
+ 'therefore'
+ ],
+ [
+ 8834,
+ 'subset of'
+ ],
+ [
+ 8835,
+ 'superset of'
+ ],
+ [
+ 8836,
+ 'not a subset of'
+ ],
+ [
+ 8838,
+ 'subset of or equal to'
+ ],
+ [
+ 8839,
+ 'superset of or equal to'
+ ],
+ [
+ 8853,
+ 'circled plus'
+ ],
+ [
+ 8855,
+ 'circled times'
+ ],
+ [
+ 8869,
+ 'perpendicular'
+ ],
+ [
+ 8901,
+ 'dot operator'
+ ],
+ [
+ 8968,
+ 'left ceiling'
+ ],
+ [
+ 8969,
+ 'right ceiling'
+ ],
+ [
+ 8970,
+ 'left floor'
+ ],
+ [
+ 8971,
+ 'right floor'
+ ],
+ [
+ 9001,
+ 'left-pointing angle bracket'
+ ],
+ [
+ 9002,
+ 'right-pointing angle bracket'
+ ],
+ [
+ 9674,
+ 'lozenge'
+ ],
+ [
+ 9824,
+ 'black spade suit'
+ ],
+ [
+ 9827,
+ 'black club suit'
+ ],
+ [
+ 9829,
+ 'black heart suit'
+ ],
+ [
+ 9830,
+ 'black diamond suit'
+ ],
+ [
+ 8194,
+ 'en space'
+ ],
+ [
+ 8195,
+ 'em space'
+ ],
+ [
+ 8201,
+ 'thin space'
+ ],
+ [
+ 8204,
+ 'zero width non-joiner'
+ ],
+ [
+ 8205,
+ 'zero width joiner'
+ ],
+ [
+ 8206,
+ 'left-to-right mark'
+ ],
+ [
+ 8207,
+ 'right-to-left mark'
+ ]
+ ]
+ }
+ ];
+ };
+ var charmapFilter = function (charmap) {
+ return global$1.grep(charmap, function (item) {
+ return isArray$1(item) && item.length === 2;
+ });
+ };
+ var getCharsFromSetting = function (settingValue) {
+ if (isArray$1(settingValue)) {
+ return [].concat(charmapFilter(settingValue));
+ }
+ if (typeof settingValue === 'function') {
+ return settingValue();
+ }
+ return [];
+ };
+ var extendCharMap = function (editor, charmap) {
+ var userCharMap = getCharMap(editor);
+ if (userCharMap) {
+ charmap = [{
+ name: UserDefined,
+ characters: getCharsFromSetting(userCharMap)
+ }];
+ }
+ var userCharMapAppend = getCharMapAppend(editor);
+ if (userCharMapAppend) {
+ var userDefinedGroup = global$1.grep(charmap, function (cg) {
+ return cg.name === UserDefined;
+ });
+ if (userDefinedGroup.length) {
+ userDefinedGroup[0].characters = [].concat(userDefinedGroup[0].characters).concat(getCharsFromSetting(userCharMapAppend));
+ return charmap;
+ }
+ return [].concat(charmap).concat({
+ name: UserDefined,
+ characters: getCharsFromSetting(userCharMapAppend)
+ });
+ }
+ return charmap;
+ };
+ var getCharMap$1 = function (editor) {
+ var groups = extendCharMap(editor, getDefaultCharMap());
+ return groups.length > 1 ? [{
+ name: 'All',
+ characters: bind(groups, function (g) {
+ return g.characters;
+ })
+ }].concat(groups) : groups;
+ };
+
+ var get = function (editor) {
+ var getCharMap = function () {
+ return getCharMap$1(editor);
+ };
+ var insertChar$1 = function (chr) {
+ insertChar(editor, chr);
+ };
+ return {
+ getCharMap: getCharMap,
+ insertChar: insertChar$1
+ };
+ };
+
+ var Cell = function (initial) {
+ var value = initial;
+ var get = function () {
+ return value;
+ };
+ var set = function (v) {
+ value = v;
+ };
+ return {
+ get: get,
+ set: set
+ };
+ };
+
+ var last = function (fn, rate) {
+ var timer = null;
+ var cancel = function () {
+ if (timer !== null) {
+ clearTimeout(timer);
+ timer = null;
+ }
+ };
+ var throttle = function () {
+ var args = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ args[_i] = arguments[_i];
+ }
+ if (timer !== null) {
+ clearTimeout(timer);
+ }
+ timer = setTimeout(function () {
+ fn.apply(null, args);
+ timer = null;
+ }, rate);
+ };
+ return {
+ cancel: cancel,
+ throttle: throttle
+ };
+ };
+
+ var nativeFromCodePoint = String.fromCodePoint;
+ var contains = function (str, substr) {
+ return str.indexOf(substr) !== -1;
+ };
+ var fromCodePoint = function () {
+ var codePoints = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ codePoints[_i] = arguments[_i];
+ }
+ if (nativeFromCodePoint) {
+ return nativeFromCodePoint.apply(void 0, codePoints);
+ } else {
+ var codeUnits = [];
+ var codeLen = 0;
+ var result = '';
+ for (var index = 0, len = codePoints.length; index !== len; ++index) {
+ var codePoint = +codePoints[index];
+ if (!(codePoint < 1114111 && codePoint >>> 0 === codePoint)) {
+ throw RangeError('Invalid code point: ' + codePoint);
+ }
+ if (codePoint <= 65535) {
+ codeLen = codeUnits.push(codePoint);
+ } else {
+ codePoint -= 65536;
+ codeLen = codeUnits.push((codePoint >> 10) + 55296, codePoint % 1024 + 56320);
+ }
+ if (codeLen >= 16383) {
+ result += String.fromCharCode.apply(null, codeUnits);
+ codeUnits.length = 0;
+ }
+ }
+ return result + String.fromCharCode.apply(null, codeUnits);
+ }
+ };
+
+ var charMatches = function (charCode, name, lowerCasePattern) {
+ if (contains(fromCodePoint(charCode).toLowerCase(), lowerCasePattern)) {
+ return true;
+ } else {
+ return contains(name.toLowerCase(), lowerCasePattern) || contains(name.toLowerCase().replace(/\s+/g, ''), lowerCasePattern);
+ }
+ };
+ var scan = function (group, pattern) {
+ var matches = [];
+ var lowerCasePattern = pattern.toLowerCase();
+ each(group.characters, function (g) {
+ if (charMatches(g[0], g[1], lowerCasePattern)) {
+ matches.push(g);
+ }
+ });
+ return map(matches, function (m) {
+ return {
+ text: m[1],
+ value: fromCodePoint(m[0]),
+ icon: fromCodePoint(m[0])
+ };
+ });
+ };
+
+ var patternName = 'pattern';
+ var open = function (editor, charMap) {
+ var makeGroupItems = function () {
+ return [
+ {
+ label: 'Search',
+ type: 'input',
+ name: patternName
+ },
+ {
+ type: 'collection',
+ name: 'results'
+ }
+ ];
+ };
+ var makeTabs = function () {
+ return map(charMap, function (charGroup) {
+ return {
+ title: charGroup.name,
+ name: charGroup.name,
+ items: makeGroupItems()
+ };
+ });
+ };
+ var makePanel = function () {
+ return {
+ type: 'panel',
+ items: makeGroupItems()
+ };
+ };
+ var makeTabPanel = function () {
+ return {
+ type: 'tabpanel',
+ tabs: makeTabs()
+ };
+ };
+ var currentTab = charMap.length === 1 ? Cell(UserDefined) : Cell('All');
+ var scanAndSet = function (dialogApi, pattern) {
+ find(charMap, function (group) {
+ return group.name === currentTab.get();
+ }).each(function (f) {
+ var items = scan(f, pattern);
+ dialogApi.setData({ results: items });
+ });
+ };
+ var SEARCH_DELAY = 40;
+ var updateFilter = last(function (dialogApi) {
+ var pattern = dialogApi.getData().pattern;
+ scanAndSet(dialogApi, pattern);
+ }, SEARCH_DELAY);
+ var body = charMap.length === 1 ? makePanel() : makeTabPanel();
+ var initialData = {
+ pattern: '',
+ results: scan(charMap[0], '')
+ };
+ var bridgeSpec = {
+ title: 'Special Character',
+ size: 'normal',
+ body: body,
+ buttons: [{
+ type: 'cancel',
+ name: 'close',
+ text: 'Close',
+ primary: true
+ }],
+ initialData: initialData,
+ onAction: function (api, details) {
+ if (details.name === 'results') {
+ insertChar(editor, details.value);
+ api.close();
+ }
+ },
+ onTabChange: function (dialogApi, details) {
+ currentTab.set(details.newTabName);
+ updateFilter.throttle(dialogApi);
+ },
+ onChange: function (dialogApi, changeData) {
+ if (changeData.name === patternName) {
+ updateFilter.throttle(dialogApi);
+ }
+ }
+ };
+ var dialogApi = editor.windowManager.open(bridgeSpec);
+ dialogApi.focus(patternName);
+ };
+
+ var register = function (editor, charMap) {
+ editor.addCommand('mceShowCharmap', function () {
+ open(editor, charMap);
+ });
+ };
+
+ var global$2 = tinymce.util.Tools.resolve('tinymce.util.Promise');
+
+ var init = function (editor, all) {
+ editor.ui.registry.addAutocompleter('charmap', {
+ ch: ':',
+ columns: 'auto',
+ minChars: 2,
+ fetch: function (pattern, _maxResults) {
+ return new global$2(function (resolve, _reject) {
+ resolve(scan(all, pattern));
+ });
+ },
+ onAction: function (autocompleteApi, rng, value) {
+ editor.selection.setRng(rng);
+ editor.insertContent(value);
+ autocompleteApi.hide();
+ }
+ });
+ };
+
+ var register$1 = function (editor) {
+ editor.ui.registry.addButton('charmap', {
+ icon: 'insert-character',
+ tooltip: 'Special character',
+ onAction: function () {
+ return editor.execCommand('mceShowCharmap');
+ }
+ });
+ editor.ui.registry.addMenuItem('charmap', {
+ icon: 'insert-character',
+ text: 'Special character...',
+ onAction: function () {
+ return editor.execCommand('mceShowCharmap');
+ }
+ });
+ };
+
+ function Plugin () {
+ global.add('charmap', function (editor) {
+ var charMap = getCharMap$1(editor);
+ register(editor, charMap);
+ register$1(editor);
+ init(editor, charMap[0]);
+ return get(editor);
+ });
+ }
+
+ Plugin();
+
+}());
diff --git a/public/static/component/pear/module/tinymce/tinymce/plugins/charmap/plugin.min.js b/public/static/component/pear/module/tinymce/tinymce/plugins/charmap/plugin.min.js
new file mode 100644
index 0000000..3df46f2
--- /dev/null
+++ b/public/static/component/pear/module/tinymce/tinymce/plugins/charmap/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.6.2 (2020-12-08)
+ */
+!function(){"use strict";var e,n,r,t,a=tinymce.util.Tools.resolve("tinymce.PluginManager"),s=function(e,n){var r,t=(r=n,e.fire("insertCustomChar",{chr:r}).chr);e.execCommand("mceInsertContent",!1,t)},i=function(e){return function(){return e}},o=i(!1),c=i(!0),u=function(){return l},l=(e=function(e){return e.isNone()},{fold:function(e,n){return e()},is:o,isSome:o,isNone:c,getOr:r=function(e){return e},getOrThunk:n=function(e){return e()},getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(undefined),or:r,orThunk:n,map:u,each:function(){},bind:u,exists:o,forall:c,filter:u,equals:e,equals_:e,toArray:function(){return[]},toString:i("none()")}),g=function(r){var e=i(r),n=function(){return a},t=function(e){return e(r)},a={fold:function(e,n){return n(r)},is:function(e){return r===e},isSome:c,isNone:o,getOr:e,getOrThunk:e,getOrDie:e,getOrNull:e,getOrUndefined:e,or:n,orThunk:n,map:function(e){return g(e(r))},each:function(e){e(r)},bind:t,exists:t,forall:t,filter:function(e){return e(r)?a:l},toArray:function(){return[r]},toString:function(){return"some("+r+")"},equals:function(e){return e.is(r)},equals_:function(e,n){return e.fold(o,function(e){return n(r,e)})}};return a},m={some:g,none:u,from:function(e){return null===e||e===undefined?l:g(e)}},f=(t="array",function(e){return r=typeof(n=e),(null===n?"null":"object"==r&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==r&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":r)===t;var n,r}),h=Array.prototype.push,p=function(e,n){for(var r=e.length,t=new Array(r),a=0;a>>0===o))throw RangeError("Invalid code point: "+o);16383<=(o<=65535?r.push(o):(o-=65536,r.push(55296+(o>>10),o%1024+56320)))&&(t+=String.fromCharCode.apply(null,r),r.length=0)}return t+String.fromCharCode.apply(null,r)},S=function(e,n){var a=[],i=n.toLowerCase();return function(e,n){for(var r=0,t=e.length;r= 0 && i < xs.length ? Optional.some(xs[i]) : Optional.none();
+ };
+ var head = function (xs) {
+ return get(xs, 0);
+ };
+
+ var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
+
+ function isCodeSample(elm) {
+ return elm && elm.nodeName === 'PRE' && elm.className.indexOf('language-') !== -1;
+ }
+ function trimArg(predicateFn) {
+ return function (arg1, arg2) {
+ return predicateFn(arg2);
+ };
+ }
+
+ var Global = typeof window !== 'undefined' ? window : Function('return this;')();
+
+ var exports$1 = {}, module = { exports: exports$1 }, global$2 = {};
+ (function (define, exports, module, require) {
+ var oldprism = window.Prism;
+ window.Prism = { manual: true };
+ (function (f) {
+ if (typeof exports === 'object' && typeof module !== 'undefined') {
+ module.exports = f();
+ } else if (typeof define === 'function' && define.amd) {
+ define([], f);
+ } else {
+ var g;
+ if (typeof window !== 'undefined') {
+ g = window;
+ } else if (typeof global$2 !== 'undefined') {
+ g = global$2;
+ } else if (typeof self !== 'undefined') {
+ g = self;
+ } else {
+ g = this;
+ }
+ g.EphoxContactWrapper = f();
+ }
+ }(function () {
+ return function () {
+ function r(e, n, t) {
+ function o(i, f) {
+ if (!n[i]) {
+ if (!e[i]) {
+ var c = 'function' == typeof require && require;
+ if (!f && c)
+ return c(i, !0);
+ if (u)
+ return u(i, !0);
+ var a = new Error('Cannot find module \'' + i + '\'');
+ throw a.code = 'MODULE_NOT_FOUND', a;
+ }
+ var p = n[i] = { exports: {} };
+ e[i][0].call(p.exports, function (r) {
+ var n = e[i][1][r];
+ return o(n || r);
+ }, p, p.exports, r, e, n, t);
+ }
+ return n[i].exports;
+ }
+ for (var u = 'function' == typeof require && require, i = 0; i < t.length; i++)
+ o(t[i]);
+ return o;
+ }
+ return r;
+ }()({
+ 1: [
+ function (require, module, exports) {
+ Prism.languages.c = Prism.languages.extend('clike', {
+ 'comment': {
+ pattern: /\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,
+ greedy: true
+ },
+ 'class-name': {
+ pattern: /(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+/,
+ lookbehind: true
+ },
+ 'keyword': /\b(?:__attribute__|_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,
+ 'function': /[a-z_]\w*(?=\s*\()/i,
+ 'operator': />>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/,
+ 'number': /(?:\b0x(?:[\da-f]+\.?[\da-f]*|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?)[ful]*/i
+ });
+ Prism.languages.insertBefore('c', 'string', {
+ 'macro': {
+ pattern: /(^\s*)#\s*[a-z]+(?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,
+ lookbehind: true,
+ greedy: true,
+ alias: 'property',
+ inside: {
+ 'string': [
+ {
+ pattern: /^(#\s*include\s*)<[^>]+>/,
+ lookbehind: true
+ },
+ Prism.languages.c['string']
+ ],
+ 'comment': Prism.languages.c['comment'],
+ 'directive': {
+ pattern: /^(#\s*)[a-z]+/,
+ lookbehind: true,
+ alias: 'keyword'
+ },
+ 'directive-hash': /^#/,
+ 'punctuation': /##|\\(?=[\r\n])/,
+ 'expression': {
+ pattern: /\S[\s\S]*/,
+ inside: Prism.languages.c
+ }
+ }
+ },
+ 'constant': /\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\b/
+ });
+ delete Prism.languages.c['boolean'];
+ },
+ {}
+ ],
+ 2: [
+ function (require, module, exports) {
+ Prism.languages.clike = {
+ 'comment': [
+ {
+ pattern: /(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,
+ lookbehind: true
+ },
+ {
+ pattern: /(^|[^\\:])\/\/.*/,
+ lookbehind: true,
+ greedy: true
+ }
+ ],
+ 'string': {
+ pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,
+ greedy: true
+ },
+ 'class-name': {
+ pattern: /(\b(?:class|interface|extends|implements|trait|instanceof|new)\s+|\bcatch\s+\()[\w.\\]+/i,
+ lookbehind: true,
+ inside: { 'punctuation': /[.\\]/ }
+ },
+ 'keyword': /\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,
+ 'boolean': /\b(?:true|false)\b/,
+ 'function': /\w+(?=\()/,
+ 'number': /\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,
+ 'operator': /[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,
+ 'punctuation': /[{}[\];(),.:]/
+ };
+ },
+ {}
+ ],
+ 3: [
+ function (require, module, exports) {
+ (function (global) {
+ (function () {
+ var _self = typeof window !== 'undefined' ? window : typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope ? self : {};
+ var Prism = function (_self) {
+ var lang = /\blang(?:uage)?-([\w-]+)\b/i;
+ var uniqueId = 0;
+ var _ = {
+ manual: _self.Prism && _self.Prism.manual,
+ disableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,
+ util: {
+ encode: function encode(tokens) {
+ if (tokens instanceof Token) {
+ return new Token(tokens.type, encode(tokens.content), tokens.alias);
+ } else if (Array.isArray(tokens)) {
+ return tokens.map(encode);
+ } else {
+ return tokens.replace(/&/g, '&').replace(/' + env.content + '' + env.tag + '>';
+ };
+ function matchGrammar(text, tokenList, grammar, startNode, startPos, rematch) {
+ for (var token in grammar) {
+ if (!grammar.hasOwnProperty(token) || !grammar[token]) {
+ continue;
+ }
+ var patterns = grammar[token];
+ patterns = Array.isArray(patterns) ? patterns : [patterns];
+ for (var j = 0; j < patterns.length; ++j) {
+ if (rematch && rematch.cause == token + ',' + j) {
+ return;
+ }
+ var patternObj = patterns[j], inside = patternObj.inside, lookbehind = !!patternObj.lookbehind, greedy = !!patternObj.greedy, lookbehindLength = 0, alias = patternObj.alias;
+ if (greedy && !patternObj.pattern.global) {
+ var flags = patternObj.pattern.toString().match(/[imsuy]*$/)[0];
+ patternObj.pattern = RegExp(patternObj.pattern.source, flags + 'g');
+ }
+ var pattern = patternObj.pattern || patternObj;
+ for (var currentNode = startNode.next, pos = startPos; currentNode !== tokenList.tail; pos += currentNode.value.length, currentNode = currentNode.next) {
+ if (rematch && pos >= rematch.reach) {
+ break;
+ }
+ var str = currentNode.value;
+ if (tokenList.length > text.length) {
+ return;
+ }
+ if (str instanceof Token) {
+ continue;
+ }
+ var removeCount = 1;
+ if (greedy && currentNode != tokenList.tail.prev) {
+ pattern.lastIndex = pos;
+ var match = pattern.exec(text);
+ if (!match) {
+ break;
+ }
+ var from = match.index + (lookbehind && match[1] ? match[1].length : 0);
+ var to = match.index + match[0].length;
+ var p = pos;
+ p += currentNode.value.length;
+ while (from >= p) {
+ currentNode = currentNode.next;
+ p += currentNode.value.length;
+ }
+ p -= currentNode.value.length;
+ pos = p;
+ if (currentNode.value instanceof Token) {
+ continue;
+ }
+ for (var k = currentNode; k !== tokenList.tail && (p < to || typeof k.value === 'string'); k = k.next) {
+ removeCount++;
+ p += k.value.length;
+ }
+ removeCount--;
+ str = text.slice(pos, p);
+ match.index -= pos;
+ } else {
+ pattern.lastIndex = 0;
+ var match = pattern.exec(str);
+ }
+ if (!match) {
+ continue;
+ }
+ if (lookbehind) {
+ lookbehindLength = match[1] ? match[1].length : 0;
+ }
+ var from = match.index + lookbehindLength, matchStr = match[0].slice(lookbehindLength), to = from + matchStr.length, before = str.slice(0, from), after = str.slice(to);
+ var reach = pos + str.length;
+ if (rematch && reach > rematch.reach) {
+ rematch.reach = reach;
+ }
+ var removeFrom = currentNode.prev;
+ if (before) {
+ removeFrom = addAfter(tokenList, removeFrom, before);
+ pos += before.length;
+ }
+ removeRange(tokenList, removeFrom, removeCount);
+ var wrapped = new Token(token, inside ? _.tokenize(matchStr, inside) : matchStr, alias, matchStr);
+ currentNode = addAfter(tokenList, removeFrom, wrapped);
+ if (after) {
+ addAfter(tokenList, currentNode, after);
+ }
+ if (removeCount > 1) {
+ matchGrammar(text, tokenList, grammar, currentNode.prev, pos, {
+ cause: token + ',' + j,
+ reach: reach
+ });
+ }
+ }
+ }
+ }
+ }
+ function LinkedList() {
+ var head = {
+ value: null,
+ prev: null,
+ next: null
+ };
+ var tail = {
+ value: null,
+ prev: head,
+ next: null
+ };
+ head.next = tail;
+ this.head = head;
+ this.tail = tail;
+ this.length = 0;
+ }
+ function addAfter(list, node, value) {
+ var next = node.next;
+ var newNode = {
+ value: value,
+ prev: node,
+ next: next
+ };
+ node.next = newNode;
+ next.prev = newNode;
+ list.length++;
+ return newNode;
+ }
+ function removeRange(list, node, count) {
+ var next = node.next;
+ for (var i = 0; i < count && next !== list.tail; i++) {
+ next = next.next;
+ }
+ node.next = next;
+ next.prev = node;
+ list.length -= i;
+ }
+ function toArray(list) {
+ var array = [];
+ var node = list.head.next;
+ while (node !== list.tail) {
+ array.push(node.value);
+ node = node.next;
+ }
+ return array;
+ }
+ if (!_self.document) {
+ if (!_self.addEventListener) {
+ return _;
+ }
+ if (!_.disableWorkerMessageHandler) {
+ _self.addEventListener('message', function (evt) {
+ var message = JSON.parse(evt.data), lang = message.language, code = message.code, immediateClose = message.immediateClose;
+ _self.postMessage(_.highlight(code, _.languages[lang], lang));
+ if (immediateClose) {
+ _self.close();
+ }
+ }, false);
+ }
+ return _;
+ }
+ var script = _.util.currentScript();
+ if (script) {
+ _.filename = script.src;
+ if (script.hasAttribute('data-manual')) {
+ _.manual = true;
+ }
+ }
+ function highlightAutomaticallyCallback() {
+ if (!_.manual) {
+ _.highlightAll();
+ }
+ }
+ if (!_.manual) {
+ var readyState = document.readyState;
+ if (readyState === 'loading' || readyState === 'interactive' && script && script.defer) {
+ document.addEventListener('DOMContentLoaded', highlightAutomaticallyCallback);
+ } else {
+ if (window.requestAnimationFrame) {
+ window.requestAnimationFrame(highlightAutomaticallyCallback);
+ } else {
+ window.setTimeout(highlightAutomaticallyCallback, 16);
+ }
+ }
+ }
+ return _;
+ }(_self);
+ if (typeof module !== 'undefined' && module.exports) {
+ module.exports = Prism;
+ }
+ if (typeof global !== 'undefined') {
+ global.Prism = Prism;
+ }
+ }.call(this));
+ }.call(this, typeof global$2 !== 'undefined' ? global$2 : typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : {}));
+ },
+ {}
+ ],
+ 4: [
+ function (require, module, exports) {
+ (function (Prism) {
+ var keyword = /\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char8_t|char16_t|char32_t|class|compl|concept|const|consteval|constexpr|constinit|const_cast|continue|co_await|co_return|co_yield|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/;
+ Prism.languages.cpp = Prism.languages.extend('c', {
+ 'class-name': [
+ {
+ pattern: RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!)\w+/.source.replace(//g, function () {
+ return keyword.source;
+ })),
+ lookbehind: true
+ },
+ /\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,
+ /\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,
+ /\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/
+ ],
+ 'keyword': keyword,
+ 'number': {
+ pattern: /(?:\b0b[01']+|\b0x(?:[\da-f']+\.?[\da-f']*|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+\.?[\d']*|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]*/i,
+ greedy: true
+ },
+ 'operator': />>=?|<<=?|->|([-+&|:])\1|[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,
+ 'boolean': /\b(?:true|false)\b/
+ });
+ Prism.languages.insertBefore('cpp', 'string', {
+ 'raw-string': {
+ pattern: /R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,
+ alias: 'string',
+ greedy: true
+ }
+ });
+ Prism.languages.insertBefore('cpp', 'class-name', {
+ 'base-clause': {
+ pattern: /(\b(?:class|struct)\s+\w+\s*:\s*)(?:[^;{}"'])+?(?=\s*[;{])/,
+ lookbehind: true,
+ greedy: true,
+ inside: Prism.languages.extend('cpp', {})
+ }
+ });
+ Prism.languages.insertBefore('inside', 'operator', { 'class-name': /\b[a-z_]\w*\b(?!\s*::)/i }, Prism.languages.cpp['base-clause']);
+ }(Prism));
+ },
+ {}
+ ],
+ 5: [
+ function (require, module, exports) {
+ (function (Prism) {
+ function replace(pattern, replacements) {
+ return pattern.replace(/<<(\d+)>>/g, function (m, index) {
+ return '(?:' + replacements[+index] + ')';
+ });
+ }
+ function re(pattern, replacements, flags) {
+ return RegExp(replace(pattern, replacements), flags || '');
+ }
+ function nested(pattern, depthLog2) {
+ for (var i = 0; i < depthLog2; i++) {
+ pattern = pattern.replace(/<>/g, function () {
+ return '(?:' + pattern + ')';
+ });
+ }
+ return pattern.replace(/<>/g, '[^\\s\\S]');
+ }
+ var keywordKinds = {
+ type: 'bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void',
+ typeDeclaration: 'class enum interface struct',
+ contextual: 'add alias and ascending async await by descending from get global group into join let nameof not notnull on or orderby partial remove select set unmanaged value when where where',
+ other: 'abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield'
+ };
+ function keywordsToPattern(words) {
+ return '\\b(?:' + words.trim().replace(/ /g, '|') + ')\\b';
+ }
+ var typeDeclarationKeywords = keywordsToPattern(keywordKinds.typeDeclaration);
+ var keywords = RegExp(keywordsToPattern(keywordKinds.type + ' ' + keywordKinds.typeDeclaration + ' ' + keywordKinds.contextual + ' ' + keywordKinds.other));
+ var nonTypeKeywords = keywordsToPattern(keywordKinds.typeDeclaration + ' ' + keywordKinds.contextual + ' ' + keywordKinds.other);
+ var nonContextualKeywords = keywordsToPattern(keywordKinds.type + ' ' + keywordKinds.typeDeclaration + ' ' + keywordKinds.other);
+ var generic = nested(/<(?:[^<>;=+\-*/%&|^]|<>)*>/.source, 2);
+ var nestedRound = nested(/\((?:[^()]|<>)*\)/.source, 2);
+ var name = /@?\b[A-Za-z_]\w*\b/.source;
+ var genericName = replace(/<<0>>(?:\s*<<1>>)?/.source, [
+ name,
+ generic
+ ]);
+ var identifier = replace(/(?!<<0>>)<<1>>(?:\s*\.\s*<<1>>)*/.source, [
+ nonTypeKeywords,
+ genericName
+ ]);
+ var array = /\[\s*(?:,\s*)*\]/.source;
+ var typeExpressionWithoutTuple = replace(/<<0>>(?:\s*(?:\?\s*)?<<1>>)*(?:\s*\?)?/.source, [
+ identifier,
+ array
+ ]);
+ var tupleElement = replace(/[^,()<>[\];=+\-*/%&|^]|<<0>>|<<1>>|<<2>>/.source, [
+ generic,
+ nestedRound,
+ array
+ ]);
+ var tuple = replace(/\(<<0>>+(?:,<<0>>+)+\)/.source, [tupleElement]);
+ var typeExpression = replace(/(?:<<0>>|<<1>>)(?:\s*(?:\?\s*)?<<2>>)*(?:\s*\?)?/.source, [
+ tuple,
+ identifier,
+ array
+ ]);
+ var typeInside = {
+ 'keyword': keywords,
+ 'punctuation': /[<>()?,.:[\]]/
+ };
+ var character = /'(?:[^\r\n'\\]|\\.|\\[Uux][\da-fA-F]{1,8})'/.source;
+ var regularString = /"(?:\\.|[^\\"\r\n])*"/.source;
+ var verbatimString = /@"(?:""|\\[\s\S]|[^\\"])*"(?!")/.source;
+ Prism.languages.csharp = Prism.languages.extend('clike', {
+ 'string': [
+ {
+ pattern: re(/(^|[^$\\])<<0>>/.source, [verbatimString]),
+ lookbehind: true,
+ greedy: true
+ },
+ {
+ pattern: re(/(^|[^@$\\])<<0>>/.source, [regularString]),
+ lookbehind: true,
+ greedy: true
+ },
+ {
+ pattern: RegExp(character),
+ greedy: true,
+ alias: 'character'
+ }
+ ],
+ 'class-name': [
+ {
+ pattern: re(/(\busing\s+static\s+)<<0>>(?=\s*;)/.source, [identifier]),
+ lookbehind: true,
+ inside: typeInside
+ },
+ {
+ pattern: re(/(\busing\s+<<0>>\s*=\s*)<<1>>(?=\s*;)/.source, [
+ name,
+ typeExpression
+ ]),
+ lookbehind: true,
+ inside: typeInside
+ },
+ {
+ pattern: re(/(\busing\s+)<<0>>(?=\s*=)/.source, [name]),
+ lookbehind: true
+ },
+ {
+ pattern: re(/(\b<<0>>\s+)<<1>>/.source, [
+ typeDeclarationKeywords,
+ genericName
+ ]),
+ lookbehind: true,
+ inside: typeInside
+ },
+ {
+ pattern: re(/(\bcatch\s*\(\s*)<<0>>/.source, [identifier]),
+ lookbehind: true,
+ inside: typeInside
+ },
+ {
+ pattern: re(/(\bwhere\s+)<<0>>/.source, [name]),
+ lookbehind: true
+ },
+ {
+ pattern: re(/(\b(?:is(?:\s+not)?|as)\s+)<<0>>/.source, [typeExpressionWithoutTuple]),
+ lookbehind: true,
+ inside: typeInside
+ },
+ {
+ pattern: re(/\b<<0>>(?=\s+(?!<<1>>)<<2>>(?:\s*[=,;:{)\]]|\s+(?:in|when)\b))/.source, [
+ typeExpression,
+ nonContextualKeywords,
+ name
+ ]),
+ inside: typeInside
+ }
+ ],
+ 'keyword': keywords,
+ 'number': /(?:\b0(?:x[\da-f_]*[\da-f]|b[01_]*[01])|(?:\B\.\d+(?:_+\d+)*|\b\d+(?:_+\d+)*(?:\.\d+(?:_+\d+)*)?)(?:e[-+]?\d+(?:_+\d+)*)?)(?:ul|lu|[dflmu])?\b/i,
+ 'operator': />>=?|<<=?|[-=]>|([-+&|])\1|~|\?\?=?|[-+*/%&|^!=<>]=?/,
+ 'punctuation': /\?\.?|::|[{}[\];(),.:]/
+ });
+ Prism.languages.insertBefore('csharp', 'number', {
+ 'range': {
+ pattern: /\.\./,
+ alias: 'operator'
+ }
+ });
+ Prism.languages.insertBefore('csharp', 'punctuation', {
+ 'named-parameter': {
+ pattern: re(/([(,]\s*)<<0>>(?=\s*:)/.source, [name]),
+ lookbehind: true,
+ alias: 'punctuation'
+ }
+ });
+ Prism.languages.insertBefore('csharp', 'class-name', {
+ 'namespace': {
+ pattern: re(/(\b(?:namespace|using)\s+)<<0>>(?:\s*\.\s*<<0>>)*(?=\s*[;{])/.source, [name]),
+ lookbehind: true,
+ inside: { 'punctuation': /\./ }
+ },
+ 'type-expression': {
+ pattern: re(/(\b(?:default|typeof|sizeof)\s*\(\s*)(?:[^()\s]|\s(?!\s*\))|<<0>>)*(?=\s*\))/.source, [nestedRound]),
+ lookbehind: true,
+ alias: 'class-name',
+ inside: typeInside
+ },
+ 'return-type': {
+ pattern: re(/<<0>>(?=\s+(?:<<1>>\s*(?:=>|[({]|\.\s*this\s*\[)|this\s*\[))/.source, [
+ typeExpression,
+ identifier
+ ]),
+ inside: typeInside,
+ alias: 'class-name'
+ },
+ 'constructor-invocation': {
+ pattern: re(/(\bnew\s+)<<0>>(?=\s*[[({])/.source, [typeExpression]),
+ lookbehind: true,
+ inside: typeInside,
+ alias: 'class-name'
+ },
+ 'generic-method': {
+ pattern: re(/<<0>>\s*<<1>>(?=\s*\()/.source, [
+ name,
+ generic
+ ]),
+ inside: {
+ 'function': re(/^<<0>>/.source, [name]),
+ 'generic': {
+ pattern: RegExp(generic),
+ alias: 'class-name',
+ inside: typeInside
+ }
+ }
+ },
+ 'type-list': {
+ pattern: re(/\b((?:<<0>>\s+<<1>>|where\s+<<2>>)\s*:\s*)(?:<<3>>|<<4>>)(?:\s*,\s*(?:<<3>>|<<4>>))*(?=\s*(?:where|[{;]|=>|$))/.source, [
+ typeDeclarationKeywords,
+ genericName,
+ name,
+ typeExpression,
+ keywords.source
+ ]),
+ lookbehind: true,
+ inside: {
+ 'keyword': keywords,
+ 'class-name': {
+ pattern: RegExp(typeExpression),
+ greedy: true,
+ inside: typeInside
+ },
+ 'punctuation': /,/
+ }
+ },
+ 'preprocessor': {
+ pattern: /(^\s*)#.*/m,
+ lookbehind: true,
+ alias: 'property',
+ inside: {
+ 'directive': {
+ pattern: /(\s*#)\b(?:define|elif|else|endif|endregion|error|if|line|pragma|region|undef|warning)\b/,
+ lookbehind: true,
+ alias: 'keyword'
+ }
+ }
+ }
+ });
+ var regularStringOrCharacter = regularString + '|' + character;
+ var regularStringCharacterOrComment = replace(/\/(?![*/])|\/\/[^\r\n]*[\r\n]|\/\*(?:[^*]|\*(?!\/))*\*\/|<<0>>/.source, [regularStringOrCharacter]);
+ var roundExpression = nested(replace(/[^"'/()]|<<0>>|\(<>*\)/.source, [regularStringCharacterOrComment]), 2);
+ var attrTarget = /\b(?:assembly|event|field|method|module|param|property|return|type)\b/.source;
+ var attr = replace(/<<0>>(?:\s*\(<<1>>*\))?/.source, [
+ identifier,
+ roundExpression
+ ]);
+ Prism.languages.insertBefore('csharp', 'class-name', {
+ 'attribute': {
+ pattern: re(/((?:^|[^\s\w>)?])\s*\[\s*)(?:<<0>>\s*:\s*)?<<1>>(?:\s*,\s*<<1>>)*(?=\s*\])/.source, [
+ attrTarget,
+ attr
+ ]),
+ lookbehind: true,
+ greedy: true,
+ inside: {
+ 'target': {
+ pattern: re(/^<<0>>(?=\s*:)/.source, [attrTarget]),
+ alias: 'keyword'
+ },
+ 'attribute-arguments': {
+ pattern: re(/\(<<0>>*\)/.source, [roundExpression]),
+ inside: Prism.languages.csharp
+ },
+ 'class-name': {
+ pattern: RegExp(identifier),
+ inside: { 'punctuation': /\./ }
+ },
+ 'punctuation': /[:,]/
+ }
+ }
+ });
+ var formatString = /:[^}\r\n]+/.source;
+ var mInterpolationRound = nested(replace(/[^"'/()]|<<0>>|\(<>*\)/.source, [regularStringCharacterOrComment]), 2);
+ var mInterpolation = replace(/\{(?!\{)(?:(?![}:])<<0>>)*<<1>>?\}/.source, [
+ mInterpolationRound,
+ formatString
+ ]);
+ var sInterpolationRound = nested(replace(/[^"'/()]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|<<0>>|\(<>*\)/.source, [regularStringOrCharacter]), 2);
+ var sInterpolation = replace(/\{(?!\{)(?:(?![}:])<<0>>)*<<1>>?\}/.source, [
+ sInterpolationRound,
+ formatString
+ ]);
+ function createInterpolationInside(interpolation, interpolationRound) {
+ return {
+ 'interpolation': {
+ pattern: re(/((?:^|[^{])(?:\{\{)*)<<0>>/.source, [interpolation]),
+ lookbehind: true,
+ inside: {
+ 'format-string': {
+ pattern: re(/(^\{(?:(?![}:])<<0>>)*)<<1>>(?=\}$)/.source, [
+ interpolationRound,
+ formatString
+ ]),
+ lookbehind: true,
+ inside: { 'punctuation': /^:/ }
+ },
+ 'punctuation': /^\{|\}$/,
+ 'expression': {
+ pattern: /[\s\S]+/,
+ alias: 'language-csharp',
+ inside: Prism.languages.csharp
+ }
+ }
+ },
+ 'string': /[\s\S]+/
+ };
+ }
+ Prism.languages.insertBefore('csharp', 'string', {
+ 'interpolation-string': [
+ {
+ pattern: re(/(^|[^\\])(?:\$@|@\$)"(?:""|\\[\s\S]|\{\{|<<0>>|[^\\{"])*"/.source, [mInterpolation]),
+ lookbehind: true,
+ greedy: true,
+ inside: createInterpolationInside(mInterpolation, mInterpolationRound)
+ },
+ {
+ pattern: re(/(^|[^@\\])\$"(?:\\.|\{\{|<<0>>|[^\\"{])*"/.source, [sInterpolation]),
+ lookbehind: true,
+ greedy: true,
+ inside: createInterpolationInside(sInterpolation, sInterpolationRound)
+ }
+ ]
+ });
+ }(Prism));
+ Prism.languages.dotnet = Prism.languages.cs = Prism.languages.csharp;
+ },
+ {}
+ ],
+ 6: [
+ function (require, module, exports) {
+ (function (Prism) {
+ var string = /("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;
+ Prism.languages.css = {
+ 'comment': /\/\*[\s\S]*?\*\//,
+ 'atrule': {
+ pattern: /@[\w-]+[\s\S]*?(?:;|(?=\s*\{))/,
+ inside: {
+ 'rule': /^@[\w-]+/,
+ 'selector-function-argument': {
+ pattern: /(\bselector\s*\((?!\s*\))\s*)(?:[^()]|\((?:[^()]|\([^()]*\))*\))+?(?=\s*\))/,
+ lookbehind: true,
+ alias: 'selector'
+ },
+ 'keyword': {
+ pattern: /(^|[^\w-])(?:and|not|only|or)(?![\w-])/,
+ lookbehind: true
+ }
+ }
+ },
+ 'url': {
+ pattern: RegExp('\\burl\\((?:' + string.source + '|' + /(?:[^\\\r\n()"']|\\[\s\S])*/.source + ')\\)', 'i'),
+ greedy: true,
+ inside: {
+ 'function': /^url/i,
+ 'punctuation': /^\(|\)$/,
+ 'string': {
+ pattern: RegExp('^' + string.source + '$'),
+ alias: 'url'
+ }
+ }
+ },
+ 'selector': RegExp('[^{}\\s](?:[^{};"\']|' + string.source + ')*?(?=\\s*\\{)'),
+ 'string': {
+ pattern: string,
+ greedy: true
+ },
+ 'property': /[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,
+ 'important': /!important\b/i,
+ 'function': /[-a-z0-9]+(?=\()/i,
+ 'punctuation': /[(){};:,]/
+ };
+ Prism.languages.css['atrule'].inside.rest = Prism.languages.css;
+ var markup = Prism.languages.markup;
+ if (markup) {
+ markup.tag.addInlined('style', 'css');
+ Prism.languages.insertBefore('inside', 'attr-value', {
+ 'style-attr': {
+ pattern: /\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,
+ inside: {
+ 'attr-name': {
+ pattern: /^\s*style/i,
+ inside: markup.tag.inside
+ },
+ 'punctuation': /^\s*=\s*['"]|['"]\s*$/,
+ 'attr-value': {
+ pattern: /.+/i,
+ inside: Prism.languages.css
+ }
+ },
+ alias: 'language-css'
+ }
+ }, markup.tag);
+ }
+ }(Prism));
+ },
+ {}
+ ],
+ 7: [
+ function (require, module, exports) {
+ (function (Prism) {
+ var keywords = /\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|null|open|opens|package|private|protected|provides|public|record|requires|return|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\b/;
+ var className = /\b[A-Z](?:\w*[a-z]\w*)?\b/;
+ Prism.languages.java = Prism.languages.extend('clike', {
+ 'class-name': [
+ className,
+ /\b[A-Z]\w*(?=\s+\w+\s*[;,=())])/
+ ],
+ 'keyword': keywords,
+ 'function': [
+ Prism.languages.clike.function,
+ {
+ pattern: /(\:\:)[a-z_]\w*/,
+ lookbehind: true
+ }
+ ],
+ 'number': /\b0b[01][01_]*L?\b|\b0x[\da-f_]*\.?[\da-f_p+-]+\b|(?:\b\d[\d_]*\.?[\d_]*|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfl]?/i,
+ 'operator': {
+ pattern: /(^|[^.])(?:<<=?|>>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,
+ lookbehind: true
+ }
+ });
+ Prism.languages.insertBefore('java', 'string', {
+ 'triple-quoted-string': {
+ pattern: /"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/,
+ greedy: true,
+ alias: 'string'
+ }
+ });
+ Prism.languages.insertBefore('java', 'class-name', {
+ 'annotation': {
+ alias: 'punctuation',
+ pattern: /(^|[^.])@\w+/,
+ lookbehind: true
+ },
+ 'namespace': {
+ pattern: RegExp(/(\b(?:exports|import(?:\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\s+)(?!)[a-z]\w*(?:\.[a-z]\w*)*\.?/.source.replace(//g, function () {
+ return keywords.source;
+ })),
+ lookbehind: true,
+ inside: { 'punctuation': /\./ }
+ },
+ 'generics': {
+ pattern: /<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<[\w\s,.&?]*>)*>)*>)*>/,
+ inside: {
+ 'class-name': className,
+ 'keyword': keywords,
+ 'punctuation': /[<>(),.:]/,
+ 'operator': /[?&|]/
+ }
+ }
+ });
+ }(Prism));
+ },
+ {}
+ ],
+ 8: [
+ function (require, module, exports) {
+ Prism.languages.javascript = Prism.languages.extend('clike', {
+ 'class-name': [
+ Prism.languages.clike['class-name'],
+ {
+ pattern: /(^|[^$\w\xA0-\uFFFF])[_$A-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\.(?:prototype|constructor))/,
+ lookbehind: true
+ }
+ ],
+ 'keyword': [
+ {
+ pattern: /((?:^|})\s*)(?:catch|finally)\b/,
+ lookbehind: true
+ },
+ {
+ pattern: /(^|[^.]|\.\.\.\s*)\b(?:as|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|(?:get|set)(?=\s*[\[$\w\xA0-\uFFFF])|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,
+ lookbehind: true
+ }
+ ],
+ 'number': /\b(?:(?:0[xX](?:[\dA-Fa-f](?:_[\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\d(?:_\d)?)+n|NaN|Infinity)\b|(?:\b(?:\d(?:_\d)?)+\.?(?:\d(?:_\d)?)*|\B\.(?:\d(?:_\d)?)+)(?:[Ee][+-]?(?:\d(?:_\d)?)+)?/,
+ 'function': /#?[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,
+ 'operator': /--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/
+ });
+ Prism.languages.javascript['class-name'][0].pattern = /(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/;
+ Prism.languages.insertBefore('javascript', 'keyword', {
+ 'regex': {
+ pattern: /((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*]|\\.|[^/\\\[\r\n])+\/[gimyus]{0,6}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,
+ lookbehind: true,
+ greedy: true,
+ inside: {
+ 'regex-source': {
+ pattern: /^(\/)[\s\S]+(?=\/[a-z]*$)/,
+ lookbehind: true,
+ alias: 'language-regex',
+ inside: Prism.languages.regex
+ },
+ 'regex-flags': /[a-z]+$/,
+ 'regex-delimiter': /^\/|\/$/
+ }
+ },
+ 'function-variable': {
+ pattern: /#?[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/,
+ alias: 'function'
+ },
+ 'parameter': [
+ {
+ pattern: /(function(?:\s+[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)?\s*\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\))/,
+ lookbehind: true,
+ inside: Prism.languages.javascript
+ },
+ {
+ pattern: /[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=>)/i,
+ inside: Prism.languages.javascript
+ },
+ {
+ pattern: /(\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*=>)/,
+ lookbehind: true,
+ inside: Prism.languages.javascript
+ },
+ {
+ pattern: /((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*\{)/,
+ lookbehind: true,
+ inside: Prism.languages.javascript
+ }
+ ],
+ 'constant': /\b[A-Z](?:[A-Z_]|\dx?)*\b/
+ });
+ Prism.languages.insertBefore('javascript', 'string', {
+ 'template-string': {
+ pattern: /`(?:\\[\s\S]|\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}|(?!\${)[^\\`])*`/,
+ greedy: true,
+ inside: {
+ 'template-punctuation': {
+ pattern: /^`|`$/,
+ alias: 'string'
+ },
+ 'interpolation': {
+ pattern: /((?:^|[^\\])(?:\\{2})*)\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}/,
+ lookbehind: true,
+ inside: {
+ 'interpolation-punctuation': {
+ pattern: /^\${|}$/,
+ alias: 'punctuation'
+ },
+ rest: Prism.languages.javascript
+ }
+ },
+ 'string': /[\s\S]+/
+ }
+ }
+ });
+ if (Prism.languages.markup) {
+ Prism.languages.markup.tag.addInlined('script', 'javascript');
+ }
+ Prism.languages.js = Prism.languages.javascript;
+ },
+ {}
+ ],
+ 9: [
+ function (require, module, exports) {
+ (function (Prism) {
+ function getPlaceholder(language, index) {
+ return '___' + language.toUpperCase() + index + '___';
+ }
+ Object.defineProperties(Prism.languages['markup-templating'] = {}, {
+ buildPlaceholders: {
+ value: function (env, language, placeholderPattern, replaceFilter) {
+ if (env.language !== language) {
+ return;
+ }
+ var tokenStack = env.tokenStack = [];
+ env.code = env.code.replace(placeholderPattern, function (match) {
+ if (typeof replaceFilter === 'function' && !replaceFilter(match)) {
+ return match;
+ }
+ var i = tokenStack.length;
+ var placeholder;
+ while (env.code.indexOf(placeholder = getPlaceholder(language, i)) !== -1)
+ ++i;
+ tokenStack[i] = match;
+ return placeholder;
+ });
+ env.grammar = Prism.languages.markup;
+ }
+ },
+ tokenizePlaceholders: {
+ value: function (env, language) {
+ if (env.language !== language || !env.tokenStack) {
+ return;
+ }
+ env.grammar = Prism.languages[language];
+ var j = 0;
+ var keys = Object.keys(env.tokenStack);
+ function walkTokens(tokens) {
+ for (var i = 0; i < tokens.length; i++) {
+ if (j >= keys.length) {
+ break;
+ }
+ var token = tokens[i];
+ if (typeof token === 'string' || token.content && typeof token.content === 'string') {
+ var k = keys[j];
+ var t = env.tokenStack[k];
+ var s = typeof token === 'string' ? token : token.content;
+ var placeholder = getPlaceholder(language, k);
+ var index = s.indexOf(placeholder);
+ if (index > -1) {
+ ++j;
+ var before = s.substring(0, index);
+ var middle = new Prism.Token(language, Prism.tokenize(t, env.grammar), 'language-' + language, t);
+ var after = s.substring(index + placeholder.length);
+ var replacement = [];
+ if (before) {
+ replacement.push.apply(replacement, walkTokens([before]));
+ }
+ replacement.push(middle);
+ if (after) {
+ replacement.push.apply(replacement, walkTokens([after]));
+ }
+ if (typeof token === 'string') {
+ tokens.splice.apply(tokens, [
+ i,
+ 1
+ ].concat(replacement));
+ } else {
+ token.content = replacement;
+ }
+ }
+ } else if (token.content) {
+ walkTokens(token.content);
+ }
+ }
+ return tokens;
+ }
+ walkTokens(env.tokens);
+ }
+ }
+ });
+ }(Prism));
+ },
+ {}
+ ],
+ 10: [
+ function (require, module, exports) {
+ Prism.languages.markup = {
+ 'comment': //,
+ 'prolog': /<\?[\s\S]+?\?>/,
+ 'doctype': {
+ pattern: /"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,
+ greedy: true,
+ inside: {
+ 'internal-subset': {
+ pattern: /(\[)[\s\S]+(?=\]>$)/,
+ lookbehind: true,
+ greedy: true,
+ inside: null
+ },
+ 'string': {
+ pattern: /"[^"]*"|'[^']*'/,
+ greedy: true
+ },
+ 'punctuation': /^$|[[\]]/,
+ 'doctype-tag': /^DOCTYPE/,
+ 'name': /[^\s<>'"]+/
+ }
+ },
+ 'cdata': //i,
+ 'tag': {
+ pattern: /<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,
+ greedy: true,
+ inside: {
+ 'tag': {
+ pattern: /^<\/?[^\s>\/]+/,
+ inside: {
+ 'punctuation': /^<\/?/,
+ 'namespace': /^[^\s>\/:]+:/
+ }
+ },
+ 'attr-value': {
+ pattern: /=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,
+ inside: {
+ 'punctuation': [
+ {
+ pattern: /^=/,
+ alias: 'attr-equals'
+ },
+ /"|'/
+ ]
+ }
+ },
+ 'punctuation': /\/?>/,
+ 'attr-name': {
+ pattern: /[^\s>\/]+/,
+ inside: { 'namespace': /^[^\s>\/:]+:/ }
+ }
+ }
+ },
+ 'entity': [
+ {
+ pattern: /&[\da-z]{1,8};/i,
+ alias: 'named-entity'
+ },
+ /?[\da-f]{1,8};/i
+ ]
+ };
+ Prism.languages.markup['tag'].inside['attr-value'].inside['entity'] = Prism.languages.markup['entity'];
+ Prism.languages.markup['doctype'].inside['internal-subset'].inside = Prism.languages.markup;
+ Prism.hooks.add('wrap', function (env) {
+ if (env.type === 'entity') {
+ env.attributes['title'] = env.content.replace(/&/, '&');
+ }
+ });
+ Object.defineProperty(Prism.languages.markup.tag, 'addInlined', {
+ value: function addInlined(tagName, lang) {
+ var includedCdataInside = {};
+ includedCdataInside['language-' + lang] = {
+ pattern: /(^$)/i,
+ lookbehind: true,
+ inside: Prism.languages[lang]
+ };
+ includedCdataInside['cdata'] = /^$/i;
+ var inside = {
+ 'included-cdata': {
+ pattern: //i,
+ inside: includedCdataInside
+ }
+ };
+ inside['language-' + lang] = {
+ pattern: /[\s\S]+/,
+ inside: Prism.languages[lang]
+ };
+ var def = {};
+ def[tagName] = {
+ pattern: RegExp(/(<__[\s\S]*?>)(?:))*\]\]>|(?!)/.source.replace(/__/g, function () {
+ return tagName;
+ }), 'i'),
+ lookbehind: true,
+ greedy: true,
+ inside: inside
+ };
+ Prism.languages.insertBefore('markup', 'cdata', def);
+ }
+ });
+ Prism.languages.html = Prism.languages.markup;
+ Prism.languages.mathml = Prism.languages.markup;
+ Prism.languages.svg = Prism.languages.markup;
+ Prism.languages.xml = Prism.languages.extend('markup', {});
+ Prism.languages.ssml = Prism.languages.xml;
+ Prism.languages.atom = Prism.languages.xml;
+ Prism.languages.rss = Prism.languages.xml;
+ },
+ {}
+ ],
+ 11: [
+ function (require, module, exports) {
+ (function (Prism) {
+ Prism.languages.php = Prism.languages.extend('clike', {
+ 'keyword': /\b(?:__halt_compiler|abstract|and|array|as|break|callable|case|catch|class|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|eval|exit|extends|final|finally|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|match|namespace|new|or|parent|print|private|protected|public|require|require_once|return|static|switch|throw|trait|try|unset|use|var|while|xor|yield)\b/i,
+ 'boolean': {
+ pattern: /\b(?:false|true)\b/i,
+ alias: 'constant'
+ },
+ 'constant': [
+ /\b[A-Z_][A-Z0-9_]*\b/,
+ /\b(?:null)\b/i
+ ],
+ 'comment': {
+ pattern: /(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,
+ lookbehind: true
+ }
+ });
+ Prism.languages.insertBefore('php', 'string', {
+ 'shell-comment': {
+ pattern: /(^|[^\\])#.*/,
+ lookbehind: true,
+ alias: 'comment'
+ }
+ });
+ Prism.languages.insertBefore('php', 'comment', {
+ 'delimiter': {
+ pattern: /\?>$|^<\?(?:php(?=\s)|=)?/i,
+ alias: 'important'
+ }
+ });
+ Prism.languages.insertBefore('php', 'keyword', {
+ 'variable': /\$+(?:\w+\b|(?={))/i,
+ 'package': {
+ pattern: /(\\|namespace\s+|use\s+)[\w\\]+/,
+ lookbehind: true,
+ inside: { punctuation: /\\/ }
+ }
+ });
+ Prism.languages.insertBefore('php', 'operator', {
+ 'property': {
+ pattern: /(->)[\w]+/,
+ lookbehind: true
+ }
+ });
+ var string_interpolation = {
+ pattern: /{\$(?:{(?:{[^{}]+}|[^{}]+)}|[^{}])+}|(^|[^\\{])\$+(?:\w+(?:\[[^\r\n\[\]]+\]|->\w+)*)/,
+ lookbehind: true,
+ inside: Prism.languages.php
+ };
+ Prism.languages.insertBefore('php', 'string', {
+ 'nowdoc-string': {
+ pattern: /<<<'([^']+)'[\r\n](?:.*[\r\n])*?\1;/,
+ greedy: true,
+ alias: 'string',
+ inside: {
+ 'delimiter': {
+ pattern: /^<<<'[^']+'|[a-z_]\w*;$/i,
+ alias: 'symbol',
+ inside: { 'punctuation': /^<<<'?|[';]$/ }
+ }
+ }
+ },
+ 'heredoc-string': {
+ pattern: /<<<(?:"([^"]+)"[\r\n](?:.*[\r\n])*?\1;|([a-z_]\w*)[\r\n](?:.*[\r\n])*?\2;)/i,
+ greedy: true,
+ alias: 'string',
+ inside: {
+ 'delimiter': {
+ pattern: /^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,
+ alias: 'symbol',
+ inside: { 'punctuation': /^<<<"?|[";]$/ }
+ },
+ 'interpolation': string_interpolation
+ }
+ },
+ 'single-quoted-string': {
+ pattern: /'(?:\\[\s\S]|[^\\'])*'/,
+ greedy: true,
+ alias: 'string'
+ },
+ 'double-quoted-string': {
+ pattern: /"(?:\\[\s\S]|[^\\"])*"/,
+ greedy: true,
+ alias: 'string',
+ inside: { 'interpolation': string_interpolation }
+ }
+ });
+ delete Prism.languages.php['string'];
+ Prism.hooks.add('before-tokenize', function (env) {
+ if (!/<\?/.test(env.code)) {
+ return;
+ }
+ var phpPattern = /<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#)(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|\/\*[\s\S]*?(?:\*\/|$))*?(?:\?>|$)/ig;
+ Prism.languages['markup-templating'].buildPlaceholders(env, 'php', phpPattern);
+ });
+ Prism.hooks.add('after-tokenize', function (env) {
+ Prism.languages['markup-templating'].tokenizePlaceholders(env, 'php');
+ });
+ }(Prism));
+ },
+ {}
+ ],
+ 12: [
+ function (require, module, exports) {
+ Prism.languages.python = {
+ 'comment': {
+ pattern: /(^|[^\\])#.*/,
+ lookbehind: true
+ },
+ 'string-interpolation': {
+ pattern: /(?:f|rf|fr)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,
+ greedy: true,
+ inside: {
+ 'interpolation': {
+ pattern: /((?:^|[^{])(?:{{)*){(?!{)(?:[^{}]|{(?!{)(?:[^{}]|{(?!{)(?:[^{}])+})+})+}/,
+ lookbehind: true,
+ inside: {
+ 'format-spec': {
+ pattern: /(:)[^:(){}]+(?=}$)/,
+ lookbehind: true
+ },
+ 'conversion-option': {
+ pattern: //,
+ alias: 'punctuation'
+ },
+ rest: null
+ }
+ },
+ 'string': /[\s\S]+/
+ }
+ },
+ 'triple-quoted-string': {
+ pattern: /(?:[rub]|rb|br)?("""|''')[\s\S]*?\1/i,
+ greedy: true,
+ alias: 'string'
+ },
+ 'string': {
+ pattern: /(?:[rub]|rb|br)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,
+ greedy: true
+ },
+ 'function': {
+ pattern: /((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,
+ lookbehind: true
+ },
+ 'class-name': {
+ pattern: /(\bclass\s+)\w+/i,
+ lookbehind: true
+ },
+ 'decorator': {
+ pattern: /(^\s*)@\w+(?:\.\w+)*/im,
+ lookbehind: true,
+ alias: [
+ 'annotation',
+ 'punctuation'
+ ],
+ inside: { 'punctuation': /\./ }
+ },
+ 'keyword': /\b(?:and|as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,
+ 'builtin': /\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,
+ 'boolean': /\b(?:True|False|None)\b/,
+ 'number': /(?:\b(?=\d)|\B(?=\.))(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i,
+ 'operator': /[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,
+ 'punctuation': /[{}[\];(),.:]/
+ };
+ Prism.languages.python['string-interpolation'].inside['interpolation'].inside.rest = Prism.languages.python;
+ Prism.languages.py = Prism.languages.python;
+ },
+ {}
+ ],
+ 13: [
+ function (require, module, exports) {
+ (function (Prism) {
+ Prism.languages.ruby = Prism.languages.extend('clike', {
+ 'comment': [
+ /#.*/,
+ {
+ pattern: /^=begin\s[\s\S]*?^=end/m,
+ greedy: true
+ }
+ ],
+ 'class-name': {
+ pattern: /(\b(?:class)\s+|\bcatch\s+\()[\w.\\]+/i,
+ lookbehind: true,
+ inside: { 'punctuation': /[.\\]/ }
+ },
+ 'keyword': /\b(?:alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|protected|private|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\b/
+ });
+ var interpolation = {
+ pattern: /#\{[^}]+\}/,
+ inside: {
+ 'delimiter': {
+ pattern: /^#\{|\}$/,
+ alias: 'tag'
+ },
+ rest: Prism.languages.ruby
+ }
+ };
+ delete Prism.languages.ruby.function;
+ Prism.languages.insertBefore('ruby', 'keyword', {
+ 'regex': [
+ {
+ pattern: RegExp(/%r/.source + '(?:' + [
+ /([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1[gim]{0,3}/.source,
+ /\((?:[^()\\]|\\[\s\S])*\)[gim]{0,3}/.source,
+ /\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}[gim]{0,3}/.source,
+ /\[(?:[^\[\]\\]|\\[\s\S])*\][gim]{0,3}/.source,
+ /<(?:[^<>\\]|\\[\s\S])*>[gim]{0,3}/.source
+ ].join('|') + ')'),
+ greedy: true,
+ inside: { 'interpolation': interpolation }
+ },
+ {
+ pattern: /(^|[^/])\/(?!\/)(?:\[[^\r\n\]]+\]|\\.|[^[/\\\r\n])+\/[gim]{0,3}(?=\s*(?:$|[\r\n,.;})]))/,
+ lookbehind: true,
+ greedy: true
+ }
+ ],
+ 'variable': /[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,
+ 'symbol': {
+ pattern: /(^|[^:]):[a-zA-Z_]\w*(?:[?!]|\b)/,
+ lookbehind: true
+ },
+ 'method-definition': {
+ pattern: /(\bdef\s+)[\w.]+/,
+ lookbehind: true,
+ inside: {
+ 'function': /\w+$/,
+ rest: Prism.languages.ruby
+ }
+ }
+ });
+ Prism.languages.insertBefore('ruby', 'number', {
+ 'builtin': /\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|Fixnum|Float|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/,
+ 'constant': /\b[A-Z]\w*(?:[?!]|\b)/
+ });
+ Prism.languages.ruby.string = [
+ {
+ pattern: RegExp(/%[qQiIwWxs]?/.source + '(?:' + [
+ /([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1/.source,
+ /\((?:[^()\\]|\\[\s\S])*\)/.source,
+ /\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}/.source,
+ /\[(?:[^\[\]\\]|\\[\s\S])*\]/.source,
+ /<(?:[^<>\\]|\\[\s\S])*>/.source
+ ].join('|') + ')'),
+ greedy: true,
+ inside: { 'interpolation': interpolation }
+ },
+ {
+ pattern: /("|')(?:#\{[^}]+\}|\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,
+ greedy: true,
+ inside: { 'interpolation': interpolation }
+ }
+ ];
+ Prism.languages.rb = Prism.languages.ruby;
+ }(Prism));
+ },
+ {}
+ ],
+ 14: [
+ function (require, module, exports) {
+ var Prism = require('prismjs/components/prism-core');
+ require('prismjs/components/prism-clike');
+ require('prismjs/components/prism-markup-templating');
+ require('prismjs/components/prism-c');
+ require('prismjs/components/prism-cpp');
+ require('prismjs/components/prism-csharp');
+ require('prismjs/components/prism-css');
+ require('prismjs/components/prism-java');
+ require('prismjs/components/prism-javascript');
+ require('prismjs/components/prism-markup');
+ require('prismjs/components/prism-php');
+ require('prismjs/components/prism-python');
+ require('prismjs/components/prism-ruby');
+ module.exports = { boltExport: Prism };
+ },
+ {
+ 'prismjs/components/prism-c': 1,
+ 'prismjs/components/prism-clike': 2,
+ 'prismjs/components/prism-core': 3,
+ 'prismjs/components/prism-cpp': 4,
+ 'prismjs/components/prism-csharp': 5,
+ 'prismjs/components/prism-css': 6,
+ 'prismjs/components/prism-java': 7,
+ 'prismjs/components/prism-javascript': 8,
+ 'prismjs/components/prism-markup': 10,
+ 'prismjs/components/prism-markup-templating': 9,
+ 'prismjs/components/prism-php': 11,
+ 'prismjs/components/prism-python': 12,
+ 'prismjs/components/prism-ruby': 13
+ }
+ ]
+ }, {}, [14])(14);
+ }));
+ var prism = window.Prism;
+ window.Prism = oldprism;
+ return prism;
+ }(undefined, exports$1, module, undefined));
+ var Prism$1 = module.exports.boltExport;
+
+ var getLanguages = function (editor) {
+ return editor.getParam('codesample_languages');
+ };
+ var useGlobalPrismJS = function (editor) {
+ return editor.getParam('codesample_global_prismjs', false, 'boolean');
+ };
+
+ var get$1 = function (editor) {
+ return Global.Prism && useGlobalPrismJS(editor) ? Global.Prism : Prism$1;
+ };
+
+ var getSelectedCodeSample = function (editor) {
+ var node = editor.selection ? editor.selection.getNode() : null;
+ if (isCodeSample(node)) {
+ return Optional.some(node);
+ }
+ return Optional.none();
+ };
+ var insertCodeSample = function (editor, language, code) {
+ editor.undoManager.transact(function () {
+ var node = getSelectedCodeSample(editor);
+ code = global$1.DOM.encode(code);
+ return node.fold(function () {
+ editor.insertContent('' + code + '
');
+ editor.selection.select(editor.$('#__new').removeAttr('id')[0]);
+ }, function (n) {
+ editor.dom.setAttrib(n, 'class', 'language-' + language);
+ n.innerHTML = code;
+ get$1(editor).highlightElement(n);
+ editor.selection.select(n);
+ });
+ });
+ };
+ var getCurrentCode = function (editor) {
+ var node = getSelectedCodeSample(editor);
+ return node.fold(function () {
+ return '';
+ }, function (n) {
+ return n.textContent;
+ });
+ };
+
+ var getLanguages$1 = function (editor) {
+ var defaultLanguages = [
+ {
+ text: 'HTML/XML',
+ value: 'markup'
+ },
+ {
+ text: 'JavaScript',
+ value: 'javascript'
+ },
+ {
+ text: 'CSS',
+ value: 'css'
+ },
+ {
+ text: 'PHP',
+ value: 'php'
+ },
+ {
+ text: 'Ruby',
+ value: 'ruby'
+ },
+ {
+ text: 'Python',
+ value: 'python'
+ },
+ {
+ text: 'Java',
+ value: 'java'
+ },
+ {
+ text: 'C',
+ value: 'c'
+ },
+ {
+ text: 'C#',
+ value: 'csharp'
+ },
+ {
+ text: 'C++',
+ value: 'cpp'
+ }
+ ];
+ var customLanguages = getLanguages(editor);
+ return customLanguages ? customLanguages : defaultLanguages;
+ };
+ var getCurrentLanguage = function (editor, fallback) {
+ var node = getSelectedCodeSample(editor);
+ return node.fold(function () {
+ return fallback;
+ }, function (n) {
+ var matches = n.className.match(/language-(\w+)/);
+ return matches ? matches[1] : fallback;
+ });
+ };
+
+ var open = function (editor) {
+ var languages = getLanguages$1(editor);
+ var defaultLanguage = head(languages).fold(function () {
+ return '';
+ }, function (l) {
+ return l.value;
+ });
+ var currentLanguage = getCurrentLanguage(editor, defaultLanguage);
+ var currentCode = getCurrentCode(editor);
+ editor.windowManager.open({
+ title: 'Insert/Edit Code Sample',
+ size: 'large',
+ body: {
+ type: 'panel',
+ items: [
+ {
+ type: 'selectbox',
+ name: 'language',
+ label: 'Language',
+ items: languages
+ },
+ {
+ type: 'textarea',
+ name: 'code',
+ label: 'Code view'
+ }
+ ]
+ },
+ buttons: [
+ {
+ type: 'cancel',
+ name: 'cancel',
+ text: 'Cancel'
+ },
+ {
+ type: 'submit',
+ name: 'save',
+ text: 'Save',
+ primary: true
+ }
+ ],
+ initialData: {
+ language: currentLanguage,
+ code: currentCode
+ },
+ onSubmit: function (api) {
+ var data = api.getData();
+ insertCodeSample(editor, data.language, data.code);
+ api.close();
+ }
+ });
+ };
+
+ var register = function (editor) {
+ editor.addCommand('codesample', function () {
+ var node = editor.selection.getNode();
+ if (editor.selection.isCollapsed() || isCodeSample(node)) {
+ open(editor);
+ } else {
+ editor.formatter.toggle('code');
+ }
+ });
+ };
+
+ var setup = function (editor) {
+ var $ = editor.$;
+ editor.on('PreProcess', function (e) {
+ $('pre[contenteditable=false]', e.node).filter(trimArg(isCodeSample)).each(function (idx, elm) {
+ var $elm = $(elm), code = elm.textContent;
+ $elm.attr('class', $.trim($elm.attr('class')));
+ $elm.removeAttr('contentEditable');
+ $elm.empty().append($('').each(function () {
+ this.textContent = code;
+ }));
+ });
+ });
+ editor.on('SetContent', function () {
+ var unprocessedCodeSamples = $('pre').filter(trimArg(isCodeSample)).filter(function (idx, elm) {
+ return elm.contentEditable !== 'false';
+ });
+ if (unprocessedCodeSamples.length) {
+ editor.undoManager.transact(function () {
+ unprocessedCodeSamples.each(function (idx, elm) {
+ $(elm).find('br').each(function (idx, elm) {
+ elm.parentNode.replaceChild(editor.getDoc().createTextNode('\n'), elm);
+ });
+ elm.contentEditable = 'false';
+ elm.innerHTML = editor.dom.encode(elm.textContent);
+ get$1(editor).highlightElement(elm);
+ elm.className = $.trim(elm.className);
+ });
+ });
+ }
+ });
+ };
+
+ var isCodeSampleSelection = function (editor) {
+ var node = editor.selection.getStart();
+ return editor.dom.is(node, 'pre[class*="language-"]');
+ };
+ var register$1 = function (editor) {
+ editor.ui.registry.addToggleButton('codesample', {
+ icon: 'code-sample',
+ tooltip: 'Insert/edit code sample',
+ onAction: function () {
+ return open(editor);
+ },
+ onSetup: function (api) {
+ var nodeChangeHandler = function () {
+ api.setActive(isCodeSampleSelection(editor));
+ };
+ editor.on('NodeChange', nodeChangeHandler);
+ return function () {
+ return editor.off('NodeChange', nodeChangeHandler);
+ };
+ }
+ });
+ editor.ui.registry.addMenuItem('codesample', {
+ text: 'Code sample...',
+ icon: 'code-sample',
+ onAction: function () {
+ return open(editor);
+ }
+ });
+ };
+
+ function Plugin () {
+ global.add('codesample', function (editor) {
+ setup(editor);
+ register$1(editor);
+ register(editor);
+ editor.on('dblclick', function (ev) {
+ if (isCodeSample(ev.target)) {
+ open(editor);
+ }
+ });
+ });
+ }
+
+ Plugin();
+
+}());
diff --git a/public/static/component/pear/module/tinymce/tinymce/plugins/codesample/plugin.min.js b/public/static/component/pear/module/tinymce/tinymce/plugins/codesample/plugin.min.js
new file mode 100644
index 0000000..53f78f8
--- /dev/null
+++ b/public/static/component/pear/module/tinymce/tinymce/plugins/codesample/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.6.2 (2020-12-08)
+ */
+!function(){"use strict";var e,n,t,r=tinymce.util.Tools.resolve("tinymce.PluginManager"),s=function(e){return function(){return e}},i=s(!1),o=s(!0),a=function(){return l},l=(e=function(e){return e.isNone()},{fold:function(e,n){return e()},is:i,isSome:i,isNone:o,getOr:t=function(e){return e},getOrThunk:n=function(e){return e()},getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:s(null),getOrUndefined:s(undefined),or:t,orThunk:n,map:a,each:function(){},bind:a,exists:i,forall:o,filter:a,equals:e,equals_:e,toArray:function(){return[]},toString:s("none()")}),u=function(t){var e=s(t),n=function(){return a},r=function(e){return e(t)},a={fold:function(e,n){return n(t)},is:function(e){return t===e},isSome:o,isNone:i,getOr:e,getOrThunk:e,getOrDie:e,getOrNull:e,getOrUndefined:e,or:n,orThunk:n,map:function(e){return u(e(t))},each:function(e){e(t)},bind:r,exists:r,forall:r,filter:function(e){return e(t)?a:l},toArray:function(){return[t]},toString:function(){return"some("+t+")"},equals:function(e){return e.is(t)},equals_:function(e,n){return e.fold(i,function(e){return n(t,e)})}};return a},c={some:u,none:a,from:function(e){return null===e||e===undefined?l:u(e)}},p=function(e){return n=e,(t=0)<=t&&t>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/,number:/(?:\b0x(?:[\da-f]+\.?[\da-f]*|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?)[ful]*/i}),Prism.languages.insertBefore("c","string",{macro:{pattern:/(^\s*)#\s*[a-z]+(?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},Prism.languages.c.string],comment:Prism.languages.c.comment,directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:Prism.languages.c}}},constant:/\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\b/}),delete Prism.languages.c["boolean"]},{}],2:[function(e,n,t){Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|interface|extends|implements|trait|instanceof|new)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,"boolean":/\b(?:true|false)\b/,"function":/\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/}},{}],3:[function(e,t,n){(function(n){(function(){var e=function(u){var c=/\blang(?:uage)?-([\w-]+)\b/i,n=0,O={manual:u.Prism&&u.Prism.manual,disableWorkerMessageHandler:u.Prism&&u.Prism.disableWorkerMessageHandler,util:{encode:function a(e){return e instanceof N?new N(e.type,a(e.content),e.alias):Array.isArray(e)?e.map(a):e.replace(/&/g,"&").replace(/=s.reach);y+=b.value.length,b=b.next){var v=b.value;if(n.length>e.length)return;if(!(v instanceof N)){var w,k,x,_,P,F,A=1;if(g&&b!=n.tail.prev){h.lastIndex=y;var S=h.exec(e);if(!S)break;var $=S.index+(d&&S[1]?S[1].length:0),j=S.index+S[0].length,E=y;for(E+=b.value.length;E<=$;)b=b.next,E+=b.value.length;if(E-=b.value.length,y=E,b.value instanceof N)continue;for(var z=b;z!==n.tail&&(Es.reach&&(s.reach=_),P=b.prev,k&&(P=B(n,P,k),y+=k.length),T(n,P,A),F=new N(i,p?O.tokenize(w,p):w,f,w),b=B(n,P,F),x&&B(n,b,x),1"+r.content+""+r.tag+">"},!u.document)return u.addEventListener&&(O.disableWorkerMessageHandler||u.addEventListener("message",function(e){var n=JSON.parse(e.data),t=n.language,r=n.code,a=n.immediateClose;u.postMessage(O.highlight(r,O.languages[t],t)),a&&u.close()},!1)),O;var e,t=O.util.currentScript();function r(){O.manual||O.highlightAll()}return t&&(O.filename=t.src,t.hasAttribute("data-manual")&&(O.manual=!0)),O.manual||("loading"===(e=document.readyState)||"interactive"===e&&t&&t.defer?document.addEventListener("DOMContentLoaded",r):window.requestAnimationFrame?window.requestAnimationFrame(r):window.setTimeout(r,16)),O}("undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{});void 0!==t&&t.exports&&(t.exports=e),void 0!==n&&(n.Prism=e)}).call(this)}).call(this,void 0!==y?y:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],4:[function(e,n,t){var r,a;r=Prism,a=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char8_t|char16_t|char32_t|class|compl|concept|const|consteval|constexpr|constinit|const_cast|continue|co_await|co_return|co_yield|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,r.languages.cpp=r.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!)\w+/.source.replace(//g,function(){return a.source})),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:a,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+\.?[\da-f']*|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+\.?[\d']*|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]*/i,greedy:!0},operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,"boolean":/\b(?:true|false)\b/}),r.languages.insertBefore("cpp","string",{"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),r.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)(?:[^;{}"'])+?(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:r.languages.extend("cpp",{})}}),r.languages.insertBefore("inside","operator",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},r.languages.cpp["base-clause"])},{}],5:[function(e,n,t){!function(t){function r(e,t){return e.replace(/<<(\d+)>>/g,function(e,n){return"(?:"+t[+n]+")"})}function a(e,n,t){return RegExp(r(e,n),t||"")}function e(e,n){for(var t=0;t>/g,function(){return"(?:"+e+")"});return e.replace(/<>/g,"[^\\s\\S]")}var n="bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void",s="class enum interface struct",i="add alias and ascending async await by descending from get global group into join let nameof not notnull on or orderby partial remove select set unmanaged value when where where",o="abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield";function l(e){return"\\b(?:"+e.trim().replace(/ /g,"|")+")\\b"}var u=l(s),c=RegExp(l(n+" "+s+" "+i+" "+o)),p=l(s+" "+i+" "+o),d=l(n+" "+s+" "+o),g=e(/<(?:[^<>;=+\-*/%&|^]|<>)*>/.source,2),m=e(/\((?:[^()]|<>)*\)/.source,2),f=/@?\b[A-Za-z_]\w*\b/.source,h=r(/<<0>>(?:\s*<<1>>)?/.source,[f,g]),b=r(/(?!<<0>>)<<1>>(?:\s*\.\s*<<1>>)*/.source,[p,h]),y=/\[\s*(?:,\s*)*\]/.source,v=r(/<<0>>(?:\s*(?:\?\s*)?<<1>>)*(?:\s*\?)?/.source,[b,y]),w=r(/[^,()<>[\];=+\-*/%&|^]|<<0>>|<<1>>|<<2>>/.source,[g,m,y]),k=r(/\(<<0>>+(?:,<<0>>+)+\)/.source,[w]),x=r(/(?:<<0>>|<<1>>)(?:\s*(?:\?\s*)?<<2>>)*(?:\s*\?)?/.source,[k,b,y]),_={keyword:c,punctuation:/[<>()?,.:[\]]/},P=/'(?:[^\r\n'\\]|\\.|\\[Uux][\da-fA-F]{1,8})'/.source,F=/"(?:\\.|[^\\"\r\n])*"/.source,A=/@"(?:""|\\[\s\S]|[^\\"])*"(?!")/.source;t.languages.csharp=t.languages.extend("clike",{string:[{pattern:a(/(^|[^$\\])<<0>>/.source,[A]),lookbehind:!0,greedy:!0},{pattern:a(/(^|[^@$\\])<<0>>/.source,[F]),lookbehind:!0,greedy:!0},{pattern:RegExp(P),greedy:!0,alias:"character"}],"class-name":[{pattern:a(/(\busing\s+static\s+)<<0>>(?=\s*;)/.source,[b]),lookbehind:!0,inside:_},{pattern:a(/(\busing\s+<<0>>\s*=\s*)<<1>>(?=\s*;)/.source,[f,x]),lookbehind:!0,inside:_},{pattern:a(/(\busing\s+)<<0>>(?=\s*=)/.source,[f]),lookbehind:!0},{pattern:a(/(\b<<0>>\s+)<<1>>/.source,[u,h]),lookbehind:!0,inside:_},{pattern:a(/(\bcatch\s*\(\s*)<<0>>/.source,[b]),lookbehind:!0,inside:_},{pattern:a(/(\bwhere\s+)<<0>>/.source,[f]),lookbehind:!0},{pattern:a(/(\b(?:is(?:\s+not)?|as)\s+)<<0>>/.source,[v]),lookbehind:!0,inside:_},{pattern:a(/\b<<0>>(?=\s+(?!<<1>>)<<2>>(?:\s*[=,;:{)\]]|\s+(?:in|when)\b))/.source,[x,d,f]),inside:_}],keyword:c,number:/(?:\b0(?:x[\da-f_]*[\da-f]|b[01_]*[01])|(?:\B\.\d+(?:_+\d+)*|\b\d+(?:_+\d+)*(?:\.\d+(?:_+\d+)*)?)(?:e[-+]?\d+(?:_+\d+)*)?)(?:ul|lu|[dflmu])?\b/i,operator:/>>=?|<<=?|[-=]>|([-+&|])\1|~|\?\?=?|[-+*/%&|^!=<>]=?/,punctuation:/\?\.?|::|[{}[\];(),.:]/}),t.languages.insertBefore("csharp","number",{range:{pattern:/\.\./,alias:"operator"}}),t.languages.insertBefore("csharp","punctuation",{"named-parameter":{pattern:a(/([(,]\s*)<<0>>(?=\s*:)/.source,[f]),lookbehind:!0,alias:"punctuation"}}),t.languages.insertBefore("csharp","class-name",{namespace:{pattern:a(/(\b(?:namespace|using)\s+)<<0>>(?:\s*\.\s*<<0>>)*(?=\s*[;{])/.source,[f]),lookbehind:!0,inside:{punctuation:/\./}},"type-expression":{pattern:a(/(\b(?:default|typeof|sizeof)\s*\(\s*)(?:[^()\s]|\s(?!\s*\))|<<0>>)*(?=\s*\))/.source,[m]),lookbehind:!0,alias:"class-name",inside:_},"return-type":{pattern:a(/<<0>>(?=\s+(?:<<1>>\s*(?:=>|[({]|\.\s*this\s*\[)|this\s*\[))/.source,[x,b]),inside:_,alias:"class-name"},"constructor-invocation":{pattern:a(/(\bnew\s+)<<0>>(?=\s*[[({])/.source,[x]),lookbehind:!0,inside:_,alias:"class-name"},"generic-method":{pattern:a(/<<0>>\s*<<1>>(?=\s*\()/.source,[f,g]),inside:{"function":a(/^<<0>>/.source,[f]),generic:{pattern:RegExp(g),alias:"class-name",inside:_}}},"type-list":{pattern:a(/\b((?:<<0>>\s+<<1>>|where\s+<<2>>)\s*:\s*)(?:<<3>>|<<4>>)(?:\s*,\s*(?:<<3>>|<<4>>))*(?=\s*(?:where|[{;]|=>|$))/.source,[u,h,f,x,c.source]),lookbehind:!0,inside:{keyword:c,"class-name":{pattern:RegExp(x),greedy:!0,inside:_},punctuation:/,/}},preprocessor:{pattern:/(^\s*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(\s*#)\b(?:define|elif|else|endif|endregion|error|if|line|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}});var S=F+"|"+P,$=r(/\/(?![*/])|\/\/[^\r\n]*[\r\n]|\/\*(?:[^*]|\*(?!\/))*\*\/|<<0>>/.source,[S]),j=e(r(/[^"'/()]|<<0>>|\(<>*\)/.source,[$]),2),E=/\b(?:assembly|event|field|method|module|param|property|return|type)\b/.source,z=r(/<<0>>(?:\s*\(<<1>>*\))?/.source,[b,j]);t.languages.insertBefore("csharp","class-name",{attribute:{pattern:a(/((?:^|[^\s\w>)?])\s*\[\s*)(?:<<0>>\s*:\s*)?<<1>>(?:\s*,\s*<<1>>)*(?=\s*\])/.source,[E,z]),lookbehind:!0,greedy:!0,inside:{target:{pattern:a(/^<<0>>(?=\s*:)/.source,[E]),alias:"keyword"},"attribute-arguments":{pattern:a(/\(<<0>>*\)/.source,[j]),inside:t.languages.csharp},"class-name":{pattern:RegExp(b),inside:{punctuation:/\./}},punctuation:/[:,]/}}});var C=/:[^}\r\n]+/.source,O=e(r(/[^"'/()]|<<0>>|\(<>*\)/.source,[$]),2),N=r(/\{(?!\{)(?:(?![}:])<<0>>)*<<1>>?\}/.source,[O,C]),B=e(r(/[^"'/()]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|<<0>>|\(<